3.SilverlightからWebサービスの参照
Silverlightから「2.」で作成したWebサービスを呼び出すために、サービスリファレンスを作成します。
SilverlightDemoプロジェクトを右クリックし、サービス参照の追加から「2.」で作成したWebサービスを参照します。
今回は、SilverightをホストするASP.NETと同じアプリケーションでWebサービスをホストするため、[探索]ボタンをクリックすることで「2.」で作成したWebService1を検索できます。
ここで、「アドレスからメタデータをダウンロードするときに、エラーが発生しました。有効なアドレスを入力していることを確認してください。」といったメッセージが表示された場合は、Silverlightで参照する前に一度WebサービスをVisual Studioからデバック実行して見てください。
また、Silverlightをホストするドメイン以外のWebサービスを参照する場合は、後述するクロスドメインの制限がありますので注意してください。
4.Webサービスの呼び出し
「3.」で作成したWebサービスのプロキシクラスからWebService1のHelloWorldメソッドを呼び出します。
SilverlightプロジェクトのPage.xamlのXAMLにWebサービスを呼び出すためのボタンを記述します([リスト1])。
<UserControl x:Class="SilverlightDemo.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<Button Height="30" Margin="100,100,100,0"
Content="サービスの呼び出し" Click="Button_Click"/>
</Grid>
</UserControl>
これでWebサービスを呼び出すための準備が終わったので、C#から作成したWebサービスを呼び出してみましょう。
Page.xaml.csを開き、Pageクラスにボタンクリックのイベントハンドラを作成します([リスト2])。
private void Button_Click(object sender, RoutedEventArgs e)
{
// (1) Webサービスプロキシの作成
var service = new ServiceReference1.WebService1SoapClient();
// (2) 呼び出し終了時のイベントハンドラの設定
service.HelloWorldCompleted += (serviceObject, serviceEvent)=>
{
if (serviceEvent.Error != null)
MessageBox.Show("通信エラー:" + serviceEvent.Error.ToString());
else
MessageBox.Show(serviceEvent.Result);
};
// (3) Webサービスの呼び出し
service.HelloWorldAsync();
}
Silverlightアプリケーションでは、Webサービスの呼び出しは非同期(Async)のみサポートされています。このためSilverlightでWebサービスを呼び出す場合は次の手順でサービスを呼び出す必要があります。
- Webサービスプロキシの作成
- 呼び出し終了時のイベントハンドラの設定
- Webサービスの呼び出し
これでWebサービスを呼び出すためのコードが記述できたので、Visual Studioメニューの[デバック]-[デバックの開始]から[Silverlight]を起動してみましょう。
起動すると次のような画面が表示されるので、サービスの呼び出しボタンをクリックしてください。メッセージボックスが表示され、HelloWorldが表示されるはずです。

自動生成されたプロキシクラスを使うことで、ネットワークプログラムやXMLからのデータの読み出しを意識せず、静的に型付けされたコードからサーバーサービスを呼び出すことができます。
サーバー側をASP.NETで作成する場合、Silverlightから呼び出すサービスをASP.NETWebサービス/ASP.NET WCFで作成し、サービスリファレンスによる参照を行うことで安全に、簡単にアプリケーションを作成することができます。
この記事は参考になりましたか?
- Silverlight 2で作成する業務アプリケーション入門連載記事一覧
-
- Silverlightとサーバーサービスの連携
- Silverlight 2でのデータバインディング
- .NET Frameworkの最新技術とSilverlightとの連携
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア

