WCFのHelloWorld(サーバ編)

Silverlightはブラウザ上で動作する関係上、セキュリティ制限が厳しくなっています。そのため、データの保存などを行う場合、サーバと連携することが必須となります。
Silverlightは様々なWebサービス技術と連携できるようになっていますが、今回はWCFでサーバ連携を実現します。

開発環境

この記事は以下の環境でのコーディングしています。

手順

  1. WCFサービスクラスの追加
  2. WCFサービスクラスの実装
  3. コンパイル

WCFサービスクラスの追加

今回は、Silverlightアプリケーションをホストしているサーバに、WCFサービスを追加します。
VisualStudioのWebサーバプロジェクトにWCFサービスクラスHelloWorldServiceを追加します。
プロジェクト上から右クリックでコンテキストメニューを表示して、追加 -> 新しい項目を選択します。

表示されたダイアログからWebのWCFサービスを選択し、名前をHelloWorldService.svcにします。設定後追加ボタンを押します。

すると、以下のファイルとアセンブリ参照が自動で追加されます。

追加されたもの
ファイル IHelloWorldService.cs, HelloWorldService.svc
アセンブリ参照 System.Runtime.Serialization.dll, System.ServiceModel.dll
  • IHelloWorldService.cs … HelloWorldサービスのインターフェイス。どのメソッドをサービス公開するかなどを制御する。
  • HelloWorldService.svc … IHelloWorldServiceを継承したサービスの実態クラス。

WCFサービスクラスの実装

引数で名前を渡すと「【名前】さん、こんにちは。」と返す簡単なメソッドを実装します。
まずは、IHelloWorldServiceにメソッドの定義します。

[ServiceContract]
public interface IHelloWorldService
{
    [OperationContract]
    string GetMessage(string name);
}

ServiceContract属性は、IHelloWorldServiceがWebサービスとして公開するクラスであることを示しています。OperationContractは、Webサービスとして公開するメソッドであることを示しています。
次に、HelloWorldServiceクラスの実装します。

public class HelloWorldService : IHelloWorldService
{
    public string GetMessage(string name)
    {
        return name + "さん、こんにちは。";
    }
}

HelloWorldServiceは、IHelloWorldServiceに合わせて実際のコーティングをするのみとなります。

コンパイル

最後にプロジェクトをコンパイルしてサーバサイドの実装終了となります。コンパイルを行わないとクライアントからサービス参照するときに意図した動作をしないことがありますので、注意しましょう。