新村 剛史
マイクロソフト株式会社デベロッパー&プラットフォーム統括本部Web プラットフォーム推進部
Twitter: @tashinmu
皆さんこんにちは
ここ2回ほど、お知らせのエントリを書いていまして、またまた DEMO のフォローの間が空いてしまいました。今回は前回の REST スタイルな WCF の DEMO の内容を少し編集して、JSON 形式でデータを公開する方法。そして、それを ASP.NET AJAX を使って呼び出す方法を説明します。
まず、 JSON について説明したいと思います。 JSON は JavaScript Object Notation の略で JavaScript の Object 表現形式をほとんどそのまま採用したデータ表現形式です。JSON 形式でデータを提供することにより、 JavaScript でのデータ操作が容易になります。 .NET Framework 3.5 では Web スタイルなWCF の一貫として REST スタイルの WCF に非常に近い実装で実現することができるようになりました。
それでは、DEMO の説明に入っていきたいと思います。まず、前回使用した Contract からWebGet の部分を削除します。あと、下記のコードでは前回のソースからネームスペースは変更してあります。 using ステートメントで System.ServiceModel.Web を設定している以外は一般的な WCF のContract と同様です。
using System;using System.Runtime.Serialization;using System.ServiceModel;using System.ServiceModel.Web;
続いて、web.config です。endpointBehaviors → behavior の下に enableWebScript 要素を追加します。前回は webHttp だったところです。
あとはサービスの実装ですが、これは前回とネームスペース以外全く同じものを使用します。
前回も申し上げましたが、非常に安易な実装ですが本質とは異なる部分なので目をつぶってください。
これでサービスの設定は出来ました。次はクライアントです。
下の aspx ファイルで ScriptManager というタグに注目してください。こちらのタグで今回のサービスである Path を設定してサービスの Proxy 経由で JavaScript からのサービス呼び出しを可能にしています。tempuri.org.ISimpleService.GetCustomer(id,onSuccess,onError) という形で Proxy 経由でContract で定義したメソッドを呼び出します。ただし、引数が Contract で定義された引数と異なることに注意してください。これはAJAX の名前の元となった Asynchronous と言う通り非同期で結果が返ってきます。結果が返ってきた場合に実行する関数を成功時と失敗時のそれぞれを引数として渡します。
このように非常に簡単に JSON 形式のサービスを ASP.NET AJAX を使って呼び出すことができます。また、ASP.NET AJAX で使っている Proxy がどのようなものか確認したい場合は下記のURL を叩くことで確認することができます。
JSON 形式のサービスを公開することも、ASP.NET AJAX を使用して呼び出すことも非常に簡単です。ぜひ、お試しください。
次回は RSS/ATOM のフィードについてご紹介したいと思います。