Flex Remoting

Die Möglichkeit, via HTTP zu kommunizieren, bietet Flex bereits von Haus aus, ein paar Zeilen MXML reichen aus, um mit einer Webapplikation Verbindung aufzunehmen. WebORB bildet eine Schnittstelle zwischen Flex und und verknüpft Frontend und Backend. Mittels dem aus Flash bekannten Kommunikationsprotokoll AMF (einigen Lesern wird auch AMFPHP ein Begriff sein) stellt es eine Verbindung zum Framework von Rails her, wodurch ein Zugriff auf die Funktionen von Rails und den darunterliegenden Ruby-Modulen ermöglicht wird. Mittels einer Konfigurationsdatei werden WebORB die Methoden bekannt gemacht, die anschließend aus Flex aufgerufen werden können – ein Zugriff auf sicherheitskritische Bereiche des Rails Frameworks ist nicht möglich, es sei denn der Entwickler gibt ihn explizit frei. Nebenbei kümmert sich WebORB um das Serialisieren und Typisieren der Daten und das Abfangen von Fehlern.

XML

<!-- WebORB remoting-config.xml -->
<destination id="InfoService">
	<properties>
		<source>InfoService</source>
	</properties>
</destination>

Listing 6

RUBY

require 'weborb/context'
require 'rbconfig'

class InfoService
	def getComputerInfo( requestId )
		computer_info = Hash.new
		request = RequestContext.get_request
		computer_info['serverName'] = request.server_software
		computer_info['requestId'] = requestId
    		computer_info['os'] = Config::CONFIG["arch"].to_s
    		computer_info['currentTime'] = Time.now
    		computer_info
  	end
end

Listing 7

XML

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="onCreationComplete();" >

	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.rpc.events.ResultEvent;
			import mx.rpc.remoting.mxml.RemoteObject;

			private var remoteObject : RemoteObject;

			private function onCreationComplete():void
			{
				remoteObject = new RemoteObject();
				remoteObject.destination = "InfoService";
				remoteObject.getComputerInfo.addEventListener( "result", onResult );
			}

			private function onResult(event:ResultEvent):void
			{
				var computerInfo:Object = event.result;

				serverInfoText.text = computerInfo.serverName;
				osText.text = computerInfo.os;
				timeText.text = computerInfo.currentTime.toString();

				infoButton.enabled = true;
			}

			private function getInfo():void
			{
				infoButton.enabled = false;

				serverInfoText.text = "in progress ...";
				osText.text = "in progress ...";
				timeText.text = "in progress ...";

				remoteObject.getComputerInfo( "request2342" );
			}
		]]>
	</mx:Script> 

    <mx:TitleWindow width="580" height="382" layout="absolute" title=" Magazine" horizontalAlign="left" fontFamily="Verdana">
        <mx:Panel x="10" y="10" width="540" height="290" title="WebORB Test" backgroundImage="assets/ruby.png" horizontalAlign="center" verticalAlign="middle" backgroundColor="#c0c0c0">
               <mx:Label text="Results" height="20" />
           		<mx:Panel title="serverInfoText"  width="510" height="62">
					<mx:Text id="serverInfoText"  text="waiting for result" />
				</mx:Panel>
           		<mx:Panel title="osText"  width="510" height="62">
					<mx:Text id="osText" text="waiting for result" />
				</mx:Panel>
           		<mx:Panel title="timeText"  width="510" height="62">
					<mx:Text id="timeText" text="waiting for result" />
				</mx:Panel>
        </mx:Panel>
        <mx:Button id="infoButton" label="Get Server Info" click="getInfo();"  x="10" y="310"/>
    </mx:TitleWindow>

</mx:Application>

Listing 8

Fazit

Mit dem Einsatz von WebORB ist es für den Entwickler nicht mehr entscheidend wo und von welcher Technologie die Methoden ausgeführt werden. WebORB eignet sich daher insbesondere zur Konsolidierung von Datenquellen. Der Entwickler braucht sich keine Gedanken über die Art und Weise derselben zu machen. Er bekommt einheitliche Ergebnisse, selbst wenn mehrere verschiedene Datenbanken verwendet werden. Die gesparte Zeit kann nun der Applikation zugute kommen. Letztendlich werden sich die Kunden weniger über die Technologien „unter der Haube“ freuen, als über eine liebevoll gestaltete Flex-Applikation, die weitgehend ohne Fehlermeldungen auskommt.

Seite:  1 2 3 4 5 6

Weitere Artikel zu PHP, Webentwicklung, Rails und Apps

Softlink 1314

Links und Literatur

Das interessiert dich bestimmt auch