.NET Compact Framework でのメッセージング

更新 : 2007 年 11 月

.NET Compact Framework に実装されている Windows Communication Foundation (WCF) のサブセットは、メッセージ指向のアプリケーションを構築するための Microsoft の統一プログラミング モデルを提供します。このモデルを使用すると、開発者は、プラットフォーム間で動作し、デスクトップ上の既存の WCF サービスとの相互作用をサポートする、セキュリティで保護されたメッセージング アプリケーションを構築できます。

Bb397842.alert_note(ja-jp,VS.90).gifメモ :

WCF は、.NET Compact Framework version 3.5 およびそれ以降のバージョンでサポートされています。

アーキテクチャ

.NET Compact Framework 対応の WCF メッセージング層は、標準デスクトップ WCF アーキテクチャをモデルに作成されています。メッセージング層はデバイス上でサポートされます。この層によって、デバイスはデスクトップ上の既存の WCF サービスに接続できます。デバイスには、サービス ランタイム層は存在しません。

次の図は、チャネル スタック、関連プロトコル、および WCF バインディング要素を示しています。

.NET Compact Framework の WCF メッセージング層
.NET Compact Framework 内の WCF のメッセージング層

WS-Security Version 1.0 仕様のサポートには、X.509 証明書を使用する SOAP メッセージ セキュリティが含まれています。

Message クラスは WS-Addressing 標準に基づいています。

デスクトップ実装との相違点

.NET Compact Framework は、デスクトップでサポートされるプロトコルとバインディングを完全にはサポートしていません。サポートされる特定のプロトコルとバインディングの詳細については、前のセクションに示したアーキテクチャの図を参照してください。

サービス ランタイム層は、.NET Compact Framework ではサポートされていません。そのため、デスクトップ上の既存の WCF サービスに接続するには、次の点に注意する必要があります。

  • Web.config ファイルの一部の設定を変更する必要があります。詳細については、「方法 : HTTP トランスポートを使用する」を参照してください。

  • System.ServiceModel コントラクトのデバイス サポートを追加するには、.NET Compact Framework ServiceModel Utility ツール (NetCFSvcUtil.exe) を使用して、WCF クライアント プロキシを生成します。このツールは、.NET Compact Framework の数多くのコントラクト パラメータをサポートしています。NetCFSvcUtil.exe は、Power Toys for .NET Compact Framework に含まれています。詳細については、「Power Toys for .NET Compact Framework」を参照してください。

  • NetCFSvcUtil を使用しない場合は、WCF ServiceModel Desktop Utility ツール (SvcUtil.exe) を使用して、生成されたコードの後処理を実行できます。この場合、生成されたコードから、サポートされていない System.ServiceModel 属性を削除する必要があります。これらの変更の詳細および例については、「方法 : HTTP トランスポートを使用する」を参照してください。

加えて、完全な .NET Framework での WCF メッセージの型とメンバのサブセットがサポートされています。

次のセクションでは、WCF セキュリティ機能に特有の相違点について説明します。

セキュリティ

.NET Compact Framework の WCF メッセージングは、WS-Security 機能のサブセットに対応し、X.509 証明書に基づいた SOAP メッセージ セキュリティをサポートします。WS-Security は、サポートされるトランスポート上に配置可能なアプリケーション層です。WCF メッセージングでサポートされるセキュリティ バインディング要素は、SecurityBindingElement および AsymmetricSecurityBindingElement です。セキュリティ機能を実装するには、ClientCredentials オブジェクトにある X.509 証明書を、WCF クライアント プロキシのコンストラクタにパラメータとして渡す必要があります。

.NET Compact Framework の WCF では、トランスポートレベルのセキュリティもサポートされています。これには、HttpsTransportBindingElementBasicHttpSecurity のサポートが含まれます。

.NET Compact Framework での WCF セキュリティの実装は、次の点で、デスクトップの実装と異なります。

  • WS-Security Version 1.0 のサブセットのみがサポートされています。

  • SecurityAlgorithmSuite クラスの場合、オペレーティング システムの制約により、Basic256Rsa15 プロパティのみがサポートされます。

  • メッセージ ヘッダーは暗号化できません。

  • BasicHttpSecurityMode はサポートされていません。

Bb397842.alert_note(ja-jp,VS.90).gifメモ :

日中時間が延長された夏時間が採用されている場合、既定の 5 分間のタイムスタンプ検証が有効になっていると、メッセージ セキュリティを使用する送信メッセージはタイムスタンプ検証エラーで失敗します。夏時間への移行は、3 月の第 2 日曜日と 4 月の第 1 日曜日の間に行われます。また、10 月の最終日曜日と 11 月の第 1 日曜日の間にも行われます。この問題を解決するには、Daylight Saving Time (DST) 2007 更新プログラムをインストールします。このことは、Windows Mobile 5.0 ビルド 15096.3.0 以降、または Windows Mobile 6.0 以降を実行しているデバイスには該当しません。

配置

WCF メッセージング DLL は、.NET Compact Framework CAB ファイルに含まれています。マネージ アセンブリはグローバル アセンブリ キャッシュにインストールされます。

デバイス用の WCF メッセージング DLL には、次のファイルが含まれています。

  • System.ServiceModel.dll

  • System.Runtime.Serialization.dll

配置では、Exchange Server の WCF メール トランスポートの配置も行われます。デバイスおよびデスクトップの配置の詳細については、「Exchange Server の WCF メール トランスポート」を参照してください。

ログの記録

.NET Framework (デスクトップ) の WCF では、トレース、メッセージング、およびイベントの 3 種類のログの記録がサポートされます。.NET Compact Framework の WCF は、コード例外の追跡を目的としてトレース ログの記録だけがサポートされます。ただし、警告メッセージとエラー メッセージは記録されません。ログ記録の構成には、レジストリ キーを使用します。

WCF 情報をログに記録するには、.NET Compact Framework のログ機能を有効にする必要があります。ログ記録を有効にし、WCF トレース ログを有効にする方法の詳細については、「方法 : ログ ファイルを作成する」を参照してください。

参照

概念

ログ ファイル情報

その他の技術情報

Windows Communication Foundation (WCF) 開発と .NET Compact Framework