WebServiceによるデータアクセス(上)Flexと.NETとの相互操作(二)


本論文では.NETプラットフォームの下でC萼言語開発のWebServiceを遠隔データソースとして、Flexと.NETのWebServiceのデータ通信の知識点を詳しく紹介します。WebServiceに接続し、WebService方法を遠隔で呼び出し、パラメータをWebService方法に伝達するなどの関連知識点を含む。三つのラベルの使い方は基本的に同じです。ここではラベルを例に紹介します。まず、次のコードブロックを見てください。
 
<mx:WebService id="dataService"
wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"
useProxy="false">
<mx:operation name="HelloWorld" result="onSuccess(event)" fault="onFault(event)"/>
<mx:operation name="GetBook" fault="onFault(event)" result="onObjectSuccess(event)"/>
</mx:WebService>

wsdl WebService wsdl , (<mx:operation>), WebService WebMethod 。result WebService ;fault , 。 <mx:operation> WebService WebMethod :
/// <summary>
///
/// </summary>
/// <returns></returns>
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}

/// <summary>
///
/// </summary>
/// <returns></returns>
[WebMethod]
public Book GetBook()
{
return new Book
{
Id = 1,
Name = " ",
Author = " ",
Price = 100
};
}
は上述のようにWebService方法で定義され、Flexのクライアント(mxml)は<mx:WebService>ラベルでWebServiceにアクセスします。FlexのクライアントでWebServiceの定義を呼び出す方法を見てみます。もちろん、Flash/FlexのクライアントでWebServiceを呼び出してもパラメータを伝えることができます。以下のようにWebServiceのWebMethod定義:
 
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

/**
* WebService -- HelloWorld ,dataService <mx:WebService> id
* */
internal function onRequest():void
{
dataService.HelloWorld();
}

/**
*
* */
internal function onSuccess(evt:ResultEvent):void
{
Alert.show(evt.result.toString());
}


/**
*
* */
internal function onFault(evt:FaultEvent):void
{
Alert.show(" WebService !");
}
]]>
</mx:Script>
また、を通じてパラメータを伝えることができます。ここでは、のパラメータ構成とWebSeviceの同じ名前の方法を知る必要があります。前に戻ってWebServiceの方法定義を見てみます。一つの方法はGetBookが戻るBookオブジェクトです。もし戻る対象なら、Flexのクライアントでどうやってこのオブジェクトの値を取得しますか?詳細には、下記のコード例を参照してください。
 
/// <summary>
///
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[WebMethod]
public string ConvertToUpper(string value)
{
return value.ToUpper();
}

<mx:WebService> <mx:operation> , :
<mx:operation name="ConvertToUpper" result="onSuccess(event)" fault="onFault(event)"/>
/**
* WebService
* */
internal function onRequest():void
{
//dataService.HelloWorld();
dataService.ConvertToUpper("abcdefg");
}
は、上述したように、サービス端末のWebServiceをクライアントに返すための呼び出しを完了しました。