Flex-RPCサービス
Flexは、サーバー側のデータをクライアント側に提供するRPCサービスを提供します。Flexは、サーバー側のデータに対してかなりの量の制御を提供します。
Flex RPCサービスを使用して、サーバー側で実行されるユーザーアクションを定義できます。
Flex RPC Sservicesは、任意のサーバーサイドテクノロジーと統合できます。
Flex RPCサービスの1つは、ネットワークを介して転送される圧縮バイナリデータの組み込みサポートを提供し、非常に高速です。
Flexは、次の3種類のRPCサービスを提供します
シニア番号 | RPCサービスと説明 |
---|---|
1 | HttpService <mx:HTTPService>タグは、MXMLファイル内のHTTPServiceオブジェクトを表すために使用されます。HTTPServiceオブジェクトのsend()メソッドを呼び出すと、指定されたURLに対してHTTP要求が行われ、HTTP応答が返されます。HTTPHEAD、OPTIONS、TRACE、およびDELETEメソッドを使用することもできます。 |
2 | WebService <mx:WebService>は、SOAP準拠のWebサービスの操作にアクセスするために使用されます。 |
3 | RemoteObject <mx:RemoteObject>タグは、MXMLファイル内のHTTPServiceオブジェクトを表すために使用されます。このタグを使用すると、アクションメッセージフォーマット(AMF)エンコーディングを使用してJavaオブジェクトのメソッドにアクセスできます。 |
HTTPサービスについて詳しく説明します。サーバーに配置されたXMLソースファイルを使用し、HTTPサービスを介してクライアント側でアクセスします。
Items.xml
<items>
<item name = "Book" description = "History of France"></item>
<item name = "Pen" description = "Parker Pen"></item>
<item name = "Pencil" description = "Stationary"></item>
<items>
HTTPService宣言
次に、HTTPServiceを宣言し、上記のファイルのURLを渡します。
<fx:Declarations>
<mx:HTTPService id = "itemRequest"
url = "http://www.tutorialspoint.com/flex/Items.xml" />
</fx:Declarations>
RPCコール
itemRequest.send()メソッドを呼び出し、itemRequestWebサービスのlastResultオブジェクトからFlexUIコンポーネントに値をバインドします。
...
itemRequest.send();
...
<mx:DataGrid id = "dgItems" height = "80%" width = "75%"
dataProvider = "{itemRequest.lastResult.items.item}">
<mx:columns>
<mx:DataGridColumn headerText = "Name" dataField = "name" />
<mx:DataGridColumn headerText = "Description" dataField = "description" />
</mx:columns>
</mx:DataGrid>
RPCサービスコールの例
それでは、FlexアプリケーションでRPCサービスをテストする手順に従ってみましょう-
ステップ | 説明 |
---|---|
1 | Flex-アプリケーションの作成の章で説明されているように、パッケージcom.tutorialspoint.clientの下にHelloWorldという名前のプロジェクトを作成します。 |
2 | 以下で説明するように、HelloWorld.mxmlを変更します。残りのファイルは変更しないでください。 |
3 | アプリケーションをコンパイルして実行し、ビジネスロジックが要件に従って機能していることを確認します。 |
以下は、変更されたmxmlファイルの内容です。 src/com.tutorialspoint/HelloWorld.mxml。
<?xml version = "1.0" encoding = "utf-8"?>
<s:Application xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
xmlns:mx = "library://ns.adobe.com/flex/mx"
minWidth = "500" minHeight = "500" creationComplete = "init(event)">
<fx:Style source = "/com/tutorialspoint/client/Style.css" />
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
protected function init(event:FlexEvent):void {
itemRequest.send();
}
]]>
</fx:Script>
<fx:Declarations>
<mx:HTTPService id = "itemRequest"
url = "http://www.tutorialspoint.com/flex/Items.xml" />
</fx:Declarations>
<s:BorderContainer width = "630" height = "480" id = "mainContainer"
styleName = "container">
<s:VGroup width = "100%" height = "100%" gap = "10"
horizontalAlign = "center" verticalAlign = "middle">
<s:Label id = "lblHeader" text = "RPC Service Demonstration"
fontSize = "40" color = "0x777777" styleName = "heading" />
<s:Panel id = "parentPanel" title = "Using RPC Services"
width = "500" height = "200" >
<s:layout>
<s:VerticalLayout gap = "10"
verticalAlign = "middle" horizontalAlign = "center" />
</s:layout>
<mx:DataGrid id = "dgItems" height = "80%" width = "75%"
dataProvider = "{itemRequest.lastResult.items.item}">
<mx:columns>
<mx:DataGridColumn headerText = "Name" dataField = "name" />
<mx:DataGridColumn headerText = "Description"
dataField = "description" />
</mx:columns>
</mx:DataGrid>
</s:Panel>
</s:VGroup>
</s:BorderContainer>
</s:Application>
すべての変更を行う準備ができたら、Flex-アプリケーションの作成の章で行ったように、アプリケーションをコンパイルして通常モードで実行します。アプリケーションに問題がない場合は、次の結果が得られます。[オンラインで試す]