Silverlightはブラウザ上で動作する関係上、セキュリティ制限が厳しくなっています。そのため、データの保存などを行う場合、サーバと連携することが必須となります。
Silverlightは様々なWebサービス技術と連携できるようになっていますが、今回はWCFでサーバ連携を実現します。
開発環境
この記事は以下の環境でのコーディングしています。
- Windows 7
- VisualStudio 2010
- Silverlight 4 Tools for VS 2010 日本語版
- Expression Blend 4
- IE8
WCFサービスクラスの追加
今回は、Silverlightアプリケーションをホストしているサーバに、WCFサービスを追加します。
VisualStudioのWebサーバプロジェクトにWCFサービスクラスHelloWorldServiceを追加します。
プロジェクト上から右クリックでコンテキストメニューを表示して、追加 -> 新しい項目を選択します。
表示されたダイアログからWebのWCFサービスを選択し、名前をHelloWorldService.svcにします。設定後追加ボタンを押します。
すると、以下のファイルとアセンブリ参照が自動で追加されます。
追加されたもの | |
---|---|
ファイル | IHelloWorldService.cs, HelloWorldService.svc |
アセンブリ参照 | System.Runtime.Serialization.dll, System.ServiceModel.dll |
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に合わせて実際のコーティングをするのみとなります。