シンプルなWCFサービスの構築

サービスプロジェクトの作成

Visual Studioで「Class Library (.NET Framework)」プロジェクトを新規作成し、SampleServiceという名前を付ける。

WCFサービスの追加

  1. 作成済みプロジェクトにWCFサービスを追加し、SampleServiceと命名。この際、System.ServiceModel参照が自動的に追加される。
  2. SampleServiceクラスのExecuteTaskメソッドを実装
namespace SampleProject
{
    public class SampleService : ISampleService
    {
        public void ExecuteTask()
        {
            Console.WriteLine("サービス起動確認中");
        }
    }
}

ホストプロジェクトの構築

  1. 新しいコンソールアプリケーション(.NET Framework)を作成し、ServiceHostSampleと名付ける
  2. System.ServiceModelアセンブリをプロジェクトに追加
  3. 作成したSampleServiceを参照に追加
  4. App.Configに以下の設定を追加
<system.serviceModel>
    <services>
        <service name="SampleProject.SampleService" behaviorConfiguration="metadataBehavior">
            <endpoint address="SampleEndpoint" binding="basicHttpBinding" contract="SampleProject.ISampleService" />
            <endpoint address="SampleEndpoint" binding="netTcpBinding" contract="SampleProject.ISampleService" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:9090/"/>
                    <add baseAddress="net.tcp://localhost:9091/"/>
                </baseAddresses>
            </host>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="metadataBehavior">
                <serviceMetadata httpGetEnabled="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>
  1. メインメソッドに以下を追加
using (ServiceHost service = new ServiceHost(typeof(SampleProject.SampleService)))
{
    service.Open();
    Console.WriteLine("サービス起動日時: " + DateTime.Now.ToString());
    Console.ReadLine();
}

管理者権限での実行が必要な場合、Visual Studioを管理者として起動するか、netshコマンドでURLアクセス権を設定する:

netsh http add urlacl url=http://+:9090/ user=ドメイン\ユーザー

クライアントの接続

  1. コンソールアプリケーションSampleClientを作成
  2. ServiceHostSampleを起動
  3. サービス参照でhttp://localhost:9090/を追加
  4. メインメソッドに以下を記述
SampleProject.SampleServiceClient client = new SampleProject.SampleServiceClient("BasicHttpBinding_ISampleService");
client.ExecuteTask();
  1. 実行すると、ホスト側のコンソールに「サービス起動確認中」と表示される

タグ: WCF .NET Framework C# サービスホスト SOAP

7月31日 18:20 投稿