方法 : 基本的な Windows Communication Foundation サービスをホストおよび実行する
これは、基本的な Windows Communication Foundation (WCF) サービスと、そのサービスを呼び出すことができるクライアントの作成に必要な 6 つのタスクのうち、3 番目のタスクです。6 つのすべてのタスクの概要については、「チュートリアル入門」を参照してください。
ここでは基本的な Windows Communication Foundation (WCF) サービスを実行する方法を説明します。この操作は、次の手順から構成されます。
- サービスのベース アドレスを作成します。
- サービスのサービス ホストを作成します。
- メタデータ交換を有効にします。
- サービス ホストを開きます。
このタスクで書かれるコードの全容は手順に続いて提供されている例で見ることができます。Program
クラスに定義されている Main()
メソッド内に次のコードを追加します。このクラスは Service
ソリューションを作成したときに生成されたものです。
サービスのベース アドレスを構成するには
- サービスのベース アドレス用に Uri インスタンスを作成します。この URI は、HTTP スキーム、ローカル コンピュータ、ポート番号 8000、およびサービスへのパスとして ServiceModelSample/Service を指定します。このパスは、サービス コントラクトでサービスの名前空間に指定されたものです。
サービスをホストするには
System.ServiceModel.Description
名前空間をインポートします。このコード行は、using ステートメントまたは imports ステートメントの残りの部分と共に Program.cs/Program.vb ファイルの一番上に書き込まれている必要があります。新しい ServiceHost インスタンスを作成し、サービスをホストします。サービス コントラクトを実装する型とベース アドレスを指定する必要があります。この例では、ベース アドレスが
https://localhost:8000/ServiceModelSamples/Service
、サービス コントラクトを実装する型がCalculatorService
になっています。CommunicationException をキャッチする try-catch ステートメントを追加し、try ブロックに次の 3 つの手順のコードを追加します。catch 句はエラー メッセージを表示してから
selfHost.Abort()
を呼び出す必要があります。サービスを公開するエンドポイントを追加します。これを行うには、エンドポイントが公開するコントラクト、バインディング、エンドポイントのアドレスを指定する必要があります。この例では、コントラクトとして
ICalculator
を、バインディングとしてWSHttpBinding
を、アドレスとしてCalculatorService
をそれぞれ指定します。ここでは、エンドポイントのアドレスが相対アドレスになっていることに注意してください。エンドポイントの完全なアドレスは、ベース アドレスとエンドポイントのアドレスを組み合わせたものです。この場合、完全なアドレスはhttps://localhost:8000/ServiceModelSamples/Service/CalculatorService
になります。メタデータ交換を有効にします。これを行うには、サービス メタデータの動作を追加します。まず、ServiceMetadataBehavior インスタンスを作成し、HttpGetEnabled プロパティを true に設定します。次に、新しい動作をサービスに追加します。メタデータ公開時のセキュリティ問題詳細については、 、「メタデータを使用する場合のセキュリティ上の考慮事項」を参照してください。
ServiceHost を開き、受信メッセージを待ちます。ユーザーが Enter キーを押すと ServiceHost が終了します。
サービスが正常に機能していることを確認するには
service.exe を Visual Studio 内から実行します。Windows Vista 上で実行されるサービスには、管理者権限が必要です。Visual Studio は管理者権限で実行されているため、service.exe も管理者権限で実行される必要があります。新しいコマンド プロンプトを管理者権限で開いて、service.exe をその中で実行することもできます。
Internet Explorer を開いて、サービスのデバッグ ページである https://localhost:8000/ServiceModelSamples/Service に移動します。
例
次の例では、チュートリアルの前の手順で作成したサービス コントラクトと実装を含め、コンソール アプリケーションでサービスをホストします。次のコードを Service.exe という名前の実行可能ファイルにコンパイルします。
コードのコンパイル時に、System.ServiceModel.dll が参照されることを確認してください。
メモ : |
---|
このようなサービスには、リッスンを行うコンピュータ上で HTTP アドレスを登録するためのアクセス許可が必要です。管理者アカウントにはこのアクセス許可がありますが、管理者以外のアカウントの場合は、HTTP 名前空間へのアクセス許可を付与する必要があります。名前空間予約の構成方法詳細については、 、「HTTP および HTTPS の構成」を参照してください。Visual Studio での service.exe の実行には、管理者権限が必要です。 |
これでサービスが実行されていることが確認できました。「方法 : Windows Communication Foundation クライアントを作成する」に進んでください。トラブルシューティングの詳細については、「チュートリアル入門のトラブルシューティング」を参照してください。