ComplexTypeAjaxService サンプルでは、Windows Communication Foundation (WCF) を使用して、複合型のインスタンスを作成し、JavaScript Object Notation (JSON) としてサービスとクライアントの間で送信する、ASP.NET 非同期 JavaScript および XML (AJAX) サービスを作成する方法を示します。 Web ブラウザー クライアントから JavaScript コードを使用して AJAX サービスにアクセスできます。 このサンプルは 、Basic AJAX サービス のサンプルに基づいています。
WCF での AJAX サポートは、 ScriptManager コントロールを介して ASP.NET AJAX で使用できるように最適化されています。 ASP.NET AJAX で WCF を使用する例については、 AJAX サンプルを参照してください。
注
このサンプルのセットアップ手順とビルド手順は、このトピックの最後にあります。
次のサンプルのサービスは、AJAX 固有のコードのない WCF サービスです。
WebGetAttribute属性は適用されないため、既定の HTTP 動詞 ("POST") が使用されます。 サービスには、DoMath
という名前の複合型を返す 1 つの操作 (MathResult
) があります。 複合型は標準のデータ コントラクト型であり、AJAX 固有のコードも含まない。
[DataContract]
public class MathResult
{
[DataMember]
public double sum;
[DataMember]
public double difference;
[DataMember]
public double product;
[DataMember]
public double quotient;
}
Basic AJAX サービスのサンプルと同様に、 WebScriptServiceHostFactoryを使用してサービスに AJAX エンドポイントを作成します。
クライアント Web ページ ComplexTypeClientPage.aspxには、ユーザーがページの [ 計算の実行 ] ボタンをクリックしたときにサービスを呼び出す ASP.NET と JavaScript コードが含まれています。 サービスを呼び出すコードは、HTTP POST を使用する AJAX サービスのサンプルと同様に、JSON 本文を構築し、 HTTP POST を使用して 送信します。
サービス呼び出しが成功すると、結果の JavaScript オブジェクトの個々のデータ メンバー (sum
、 difference
、 product
、 quotient
) にアクセスできます。
function onSuccess(mathResult){
document.getElementById("sum").value = mathResult.sum;
document.getElementById("difference").value = mathResult.difference;
document.getElementById("product").value = mathResult.product;
document.getElementById("quotient").value = mathResult.quotient;
}
サンプルを設定、ビルド、実行するには
Windows Communication Foundation サンプル のOne-Time セットアップ手順を実行していることを確認します。
「Windows Communication Foundation サンプルのビルド」の説明に従って、ComplexTypeAjaxService.slnソリューションをビルドします。
http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx
に移動します (プロジェクト ディレクトリからブラウザーでComplexTypeClientPage.aspxを開かないでください)。