Una forma muy habitual de compartir información de tu sistema con "extraños" o sea, otras empresa, sistemas, servicios es por medio de webservices.
¿Pero que es un web service?
Un web service es en su explicación mas sencilla, la publicación de funciones para el uso externo al sistema en donde son generados.
Veamos ejemplos:
Ejemplo 1:
Tengo un sistema de stock desarrollado en Java y por otro lado un sistema de gestión de pedidos en python (en otro servidor, dominio o incluso en otro continente). ¿Como el sistema de gestión accede a los datos de stock (suponiendo que no debe acceder a los datos en crudo)? Pues una buena solución es mediante webservices.
Ejemplo 2:
Se desarrolla la lógica de negocio en una capa en .Net de algún sistema ERP y se lo desea consumir desde diferentes sistemas, por un lado hacer el frontend en Flex y por otro en un sistemas heredado visualizar datos del ERP.
¿Que se puede hacer con un WS?
Se puede hacer todo lo que se quiera, editar información, ABM, leer datos, transformar datos, ejecutar lógica de negocios, etc... solo lo limita nuestra imaginación.
¿Donde tengo una explicación mas detallada?
Como siempre la wikipedia son salva: http://es.wikipedia.org/wiki/Webservice
Bueno, como verán los webservice son muy útiles en gran cantidad de ocasiones.
Ejemplo Flex
Veamos como consumir un WebSevice desde Flex de una manera muy sencilla.
Código :
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="100%"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; [Bindable] private var wsdl:String = "aca_va_el_url_al_webservice"; private function onClickLoadQVD():void { webService.GetQVD("hola"); } private function getQVD_result(event:ResultEvent):void { Alert.show("ok", "ok", Alert.OK); textArea.text = webService.GetQVD.lastResult; } private function getQVD_fault(event:FaultEvent):void { Alert.show("fault", "fault", Alert.OK); textArea.text = ""; } ]]> </mx:Script> <mx:WebService id="webService" wsdl="{wsdl}" showBusyCursor="true"> <mx:operation name="GetQVD" resultFormat="e4x" result="getQVD_result(event);" fault="getQVD_fault(event);" /> </mx:WebService> <mx:Button label="Load QVD" click="onClickLoadQVD()" /> <mx:TextArea id="textArea" width="100%" height="100%" /> </mx:Application>
Bueno, espero que les sirva el tip.
Saludos!
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Raxiro el 16 de Abril de 2009
Muchas veces en flex la llamada al webservice la hacen desde el onCreationComplete() para que solicite datos ni bien termino de cargar la aplicación, pero también está bueno que se muestre de otra forma, como lo hiciste vos.
Cabe destacar que un webservice es un archivo XML y que para poder utilizarlo desde otro dominio se debe tener acceso mediante no me acuerdo que parametro (era crossdomain en el wsdl o algo así no?)
Y que no vayan a poner datos privados en un webservice a no ser que restrinjan bien su uso
Si me equivoqué en algo que los masters me perdonan y corrijan
Por felipe el 17 de Abril de 2009
Por alfathenus el 17 de Abril de 2009
Raxiro-blog :
En verdad la respuesta es un XML, pero el ws se desarrolla dependiendo la plataforma, no es q para crear un xml tenes q hacer un xml, sino q la respuesta (o sea la salida) es en formato xml (en verdad el estandar extendido de XML llamado WSDL). Aclaro esto para la gente q recien comienza con los webservice.
Raxiro-blog :
Si, por lo gral si... si esta en otro dominio si se necesita un crossdomain, pero este es un archivo en el servidor y no es algo de los webservices en si, sino de una politica de seguridad del flash player. Igualmente, creo q en el caso de ws nose si hacen falta un crossdomain, creo q depende de la authentificacion.... pero eso no te lo puedo asegurar, porque seguramente en entornos habiertos por ej alguien q publique a la comunidad un ws, con solo poner un crossdomain con policy=all sera suficiente, pero en entornos corporativos, ademas de esto, necesitan algun tipo de authentificacion (http, olap, vnc, etc).
felipe-blog :
Clab es genial!!
Por francisco colin varg el 25 de Agosto de 2009