-
Povezivanje C# i Actionscript klasa pomoću WebORB-a
Objavljeno: 23.05.2009. 17:27 Nema komentara
Nakon što ste uspješno instalirali WebORB for .NET i povezali Flex i .NET aplikaciju, trebamo vidjeti kako povezati instancu klase na klijentovom računalu (Actionscript klasa) s klasom na serveru (C# klasa). Kroz kratki tutorial ćete lako pohvatati ovo znanje. Ako dosad niste radili s WebORB-om, pogledajte raniji članak o tome: Povezivanje Flexa i .NET-a pomoću WebORB-a: Hello, WorldIdemo napraviti novi class library za WebORB u Visual Studiju. Za predložak projekta ponovno koristite ‘class library for WebORB’. U projektu možete koristiti dolje navedeni kod:
using System; using System.Collections.Generic; using System.Text; namespace FlexWebOrb.ZgFlex { public class UserService { public WebOrbUser getUserProperties(WebOrbUser user) { WebOrbUser WebOrbUser = new WebOrbUser(); WebOrbUser.firstName = user.firstName.ToUpper(); WebOrbUser.lastName = user.lastName.ToUpper(); WebOrbUser.age = user.age; return WebOrbUser; } } public class WebOrbUser { public string firstName; public string lastName; public int age; } }Kao što možete vidjeti, ovaj servis unutar namespacea sadrži jednostavnu VO (value object) klasu WebOrbUser. Nju ćemo koristiti za mapiranje serverske i klijentske instance klase. U Flex Builderu napravite novi projekt i dodajte WebORB.swc library u projekt te podesite da compiler koristi xml s konfiguracijom servisa (upute možete vidjeti u prethodnom članku). Napravite sljedeću Actionscript klasu:
package org.zgflex.vo { //[RemoteClass(alias="FleFlexWebOrb.ZgFlex.WebOrbUser")] public class WebOrbUser { public var firstName:String; public var lastName:String; public var age:int; } }Zakomentirana linija je vrlo bitna jer sadržni alias remote klase u C#. Na taj način će WebORB znati da je poslani objekt mapiran sa C# klasom na serveru. Pogledajte kako izgleda kod Flex aplikacije:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.rpc.events.*; import mx.collections.*; import mx.controls.*; import org.zgflex.vo.*; [Bindable] public var serverUser:WebOrbUser = new WebOrbUser(); private function faultHandler(event:FaultEvent):void { Alert.show(event.fault.faultString, "Error"); } private function getUserPropertiesHandler(event:ResultEvent):void { serverUser.firstName = event.result.firstName; serverUser.lastName = event.result.lastName; serverUser.age = event.result.age; // you can display values in another panel lblFirstName.text = serverUser.firstName; lblLastName.text = serverUser.lastName; lblAge.text = serverUser.age.toString(); Alert.show("You successfully transfered an object to your .NET server!"); } private function sendUserData():void { var myUser:WebOrbUser = new WebOrbUser(); myUser.firstName = txtFirstName.text; myUser.lastName = txtLastName.text; myUser.age = new int(txtAge.text); WebOrbConnect.getUserProperties(myUser); } ]]> </mx:Script> <mx:Panel x="23" y="19" width="289" height="200" layout="absolute" title="Sending user data"> <mx:Label x="10" y="10" text="First name:"/> <mx:Label x="10" y="40" text="Last name:"/> <mx:Label x="10" y="70" text="Age:"/> <mx:TextInput x="87" y="8" width="172" id="txtFirstName"/> <mx:TextInput x="87" y="38" width="172" id="txtLastName"/> <mx:TextInput x="87" y="68" width="46" id="txtAge"/> <mx:Button x="14" y="111" label="Send to .NET server" width="153" click="sendUserData()"/> </mx:Panel> <mx:Panel x="329" y="19" width="289" height="200" layout="absolute" title="Server data"> <mx:Label x="10" y="10" text="First name:"/> <mx:Label x="10" y="40" text="Last name:"/> <mx:Label x="10" y="70" text="Age:"/> <mx:Label x="87" y="10" width="94" id="lblFirstName" textAlign="center"/> <mx:Label x="87.5" y="40" width="94" id="lblLastName" textAlign="center"/> <mx:Label x="87.5" y="70" width="94" id="lblAge" textAlign="center"/> </mx:Panel> <mx:RemoteObject id="WebOrbConnect" destination="GenericDestination" source="FlexWebOrb.ZgFlex.UserService" showBusyCursor="true" fault="faultHandler(event)"> <mx:method name="getUserProperties" result="getUserPropertiesHandler(event)"/> </mx:RemoteObject> </mx:Application>Klasa UserService na serveru sadrži metodu
getUserProperties(WebOrbUser user). Ona dohvataća Flex objekt instance klase WebOrbUser. WebORB zbog zadanog aliasa mapira Actionscript klasu u C# klasu, a metoda radi svoj posao i šalje C# instancu klase Flexu. Radi se obrnuti proces mapiranja te Flex dobiva odgovor u sebi prihvatljivom obliku Actionscript klase. Podaci se prikazuju na desnom panelu aplikacije.Source aplikacije možete dohvatiti ovdje: Mapiranje C# i Actionscript klasa.
Ostavite komentar:






