В конечном результате важен конечный результат!

вторник, февраля 21, 2006

Flex 2.0 data features (часть вторая)

В предыдущей части я рассказал об основных возможностях Flex 2.0, которые разработчик может использовать для получения, обработки и манипулирования данными.
В этой части я расскажу о RPC. Тема эта весьма интересная и объемная, но также и представляющая впечатляющие возможности по работе с данными.


Немного об RPC
Вы можете использовать Flex RPC сервисы в MXML или ActionScript. RPC представляет три типа служб: remote object services, web services и HTTP services.
Пойдем по порядку и разберем все эти службы и как их использовать.


RemoteObject
Компонент RemoteObject позволяет вам получить доступ к методам серверных объектов, таких, к примеру, как Java Objects, без непосредственного ручного конфигурирования объектов. В отличие от WebService и HTTPService, вы можете использовать RemoteObject только в связке с Flex Enterprise Services (FES) или ColdFusion.


Конфигурацию объектов, к которым вы хотите получать доступ вы можете «хранить» в Flex Service Configuration File, который является частью FES. RemoteObjects могут использоваться как в MXML, так и в ActionScript.


Помимо этого вы можете использовать RemoteObjects вместо WebService тогда, когда объекты еще не опубликованы как web-сервисы, или же эти сервисы не используются в вашем окружении.


Также надо сказать и о том, что когда вы используете тег RemoteObject, данные передаются вашему приложению с сервера в бинарном формате Action Message Format (AMF).


Декларация RemoteObject в MXML выглядит следующим образом:


<mx:RemoteObject id="employeeRO" destination="SalaryManager"/>

А в ActionScript это выглядит следующим образом:


var employeeRO:mx.rpc.remoting.RemoteObject = new RemoteObject(); employeeRO.destination = "SalaryManager";

WebService
WebSerive позволяет разроботчикам получить доступ к web-сервисам, представляющим интерфейс WSDL, доступ к которому можно получить по URL. WSDL - это стандартный формат для описания сообщений. На данный момент поддерживается WSDL 1.1.


Также Flex-приложения поддерживают web-сервисные запросы и полученные результаты, оформленные в виде SOAP.


Декларация WebService в MXML выглядит следующим образом:


<mx:WebService id="macr_news" wsdl="http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl" useProxy="false"/>

А в ActionScript это выглядит следующим образом:



private var macr_news:mx.rpc.soap.WebService =
new WebService(); macr_news.wsdl = "http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl"; macr_news.useProxy = false;

HTTPService
HTTPService позволит вам посылать HTTP-запросы GET и POST. HTTPService – это идеальное решение для тех случаев, когда вы не имеете возможности использовать SOAP. К примеру вы можете использовать HTTPService для взаимодействия с JSP или сервлетами или же ASP-страницами, которые не доступны как web-сервисы.


Декларация HTTPService в MXML выглядит следующим образом:


<mx:HTTPService id="yahoo_web_search" url="http://api.search.yahoo.com/WebSearchService/V1/webSearch" useProxy="false"/>

А в ActionScript это выглядит следующим образом:


// Импорт
import mx.rpc.http.HTTPService;
import mx.rpc.soap.WebService; ...
// Декларируем HTTPService component
private var yahoo_web_search:mx.rpc.http.HTTPService = new HTTPService(); yahoo_web_search.url = "http://api.search.yahoo.com/WebSearchService/V1/webSearch"; employeeHTTP.useProxy = false;

Пример компонента RPC


Следующий пример показывает MXML-код для RemoteObject, которые коннектитися к удаленному сервису, посылает запрос и показывает полученные результаты в TextArea.



... <!-- Коннектимся -->
<mx:RemoteObject id="myService" destination="myRO"/>
<!-- Запрос -->
<mx:TextInput id="inputText">
<!—вызывает web-сервис, а в качестве запроса используем значение поля --> <mx:Button click="myService.getData(inputText.text)">
<!—Отображаем результаты -->
<mx:TextArea text="{myService.getData.result.prop1}"
...

Надеюсь, что принцип работы этих замечательных служб вы поняли, а посему прощаюсь до следующей части, в которой мы поговорим о Data services.


Продолжение следует.

Комментариев нет: