単純な WCF サービスの実装
ここでは単純な WCF サービスを実装します。
WCF はもともと Web サービス専用のフレームワークではありませんが、 WCF を用いると非常に簡単に Web Service を実装できることがわかるはずです。
足し算を行う WCF サービスの作成と設定
例として、足し算を行う Web サービスを実装しましょう。 もちろん足し算みたいな単純な演算をわざわざ外部プログラムを使って行う人はいないですけど、まぁ、コテコテのサンプルっぽいですよね(笑)
サービスの内容
次の内容を ICalc.cs として App_Code ディレクトリに保存します。これがインターフェイス定義です。
using System.ServiceModel; namespace MyMath { [ServiceContract] public interface ICalc { [OperationContract] int Add(int i, int j); } }
サービスの内容を実装するのは次です。次のコードを Calc.cs として App_Code ディレクトリに保存してください。
namespace MyMath { public class Calc : ICalc { public int Add(int i, int j) { return i+j; } } }
これでメソッド Add を持つ ICalc インターフェイスを実装した Calc クラスが実装できました。
インターフェイス定義の中に、サービスコントラクト (ServiceContract) とかオペレーションコントラクト (OperationContract) という属性が設定されていること以外、 特に変わったことは何もありません。C# を知っている方なら特に何も問題はないはずです。
svc ファイルの配置
上記の Calc クラスを Web サービスとするためには、次の内容の svc ファイル CalcService.svc を作成します。
<%@ ServiceHost Language="C#" Service="MyMath.Calc" %>
ご覧の通りたった一行です。
svc ファイルはクライアントから直接呼び出すので、App_Code ではなく、ブラウザから到達する位置に配置してください。 ASP.NET アプリケーションのルートに置けば良いでしょう。
設定ファイル web.config の配置
Web.Config を次の内容で作成してください。
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.serviceModel> <services> <service name="MyMath.Calc" behaviorConfiguration="CalcBehaviors"> <endpoint binding="basicHttpBinding" contract="MyMath.ICalc" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="CalcBehaviors" > <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
以上でできあがりです。簡単ですね。
実行
ブラウザから svc ファイルをリクエストすると、成功すると次のような画面が現れるはずです。
では、次にうまく行かない場合のトラブルシューティング方法や利用方法について説明していきましょう。