{"id":943,"date":"2011-06-07T23:00:19","date_gmt":"2011-06-07T22:00:19","guid":{"rendered":"http:\/\/www.zigbe.net\/?p=943"},"modified":"2011-06-07T23:00:19","modified_gmt":"2011-06-07T22:00:19","slug":"restfull-la-mejor-solucion-para-el-brokerage-de-datos","status":"publish","type":"post","link":"https:\/\/blog.whatsbee.net\/?p=943","title":{"rendered":"RESTful: La mejor soluci\u00f3n para el brokerage de datos"},"content":{"rendered":"<p>Dicen en mi tierra que el que sabe de todo no es especialista en nada, me siento claramente identificado con esta frase. Por otro lado y en mi defensa citar\u00e9 una frase de Danny Kaye \u00abUn especialista es una persona que cada vez sabe m\u00e1s sobre menos, hasta que termina sabi\u00e9ndolo todo sobre nada&#8230; y nada sobre todo\u00bb.<\/p>\n<p>Hace unos d\u00edas estuve en el Bdigital global congress organizado por Bdigital en Barcelona, los dos primeros d\u00edas el tema central de las ponencias fu\u00e9 sobre los Smart Cities Projects. Entre muchas ponencias en las que se habl\u00f3 de la implantaci\u00f3n de proyectos poco novedosos (desde mi punto de vista) y en la que algunos fabricantes\/integradores ven\u00edan a \u00abvender\u00bb su proyecto hubo una ponencia de Esteve Almirall. Esteve Almirall tiene la gran virtud de elevar un poco el nivel en este tipo de actos, no se limit\u00f3 a describir un la implementaci\u00f3n de un proyecto o las virtudes de un producto, sino a explicar y a desarrollar una buena sobre idea open governement data apoyado en un \u00abbusiness case\u00bb, sobre los datos de la frecuencia del transporte p\u00fablico en una ciudad de EEUU (disculpadme, pero no me acuerdo de cual).<\/p>\n<p>La tesis defendida por el Sr. Almirall era que los datos generados por un gobierno deber\u00edan de ponerse a disposici\u00f3n de los ciudadanos mediante est\u00e1ndares abiertos y API&#8217;s p\u00fablicas. Los datos de utilidad ser\u00e1n utilizados por los propios ciudadanos que crear\u00e1n interfaces y probablemente los har\u00e1n p\u00fablicos para otros ciudadanos, bien como un servicio gratuito a la comunidad o como parte de un servicio de pago. De una forma muy sencilla, la idea, es que en una administraci\u00f3n p\u00fablica es mucho m\u00e1s eficiente dedicar los recursos a poner la informaci\u00f3n en un formato abierto en manos de los ciudadanos que dedicarlos a crear una app para el iphone. Si los datos son de utilidad, y se publican en un formato abierto, es probable que la aplicaci\u00f3n la cree una tercera persona, de hecho es muy probable que aparezcan muchas aplicaciones en muchos entornos diferentes que se aprovechen de la informaci\u00f3n y que contribuyan a difundirla, que al fin y al cabo es de lo que es trata.<\/p>\n<p>Despu\u00e9s de la ponencia vi clara la aplicaci\u00f3n en nuestro proyecto, trabajando en una capa de abstracci\u00f3n de los datos de los sensores, haci\u00e9ndolos p\u00fablicos, cualquier consumidor de los mismos podr\u00e1 crear aplicaciones y, posiblemente, ponerlas al servicio de la comunidad.\u00a0B\u00e1sicamente\u00a0lo que hace Pachube.<\/p>\n<p>Cuando me decid\u00ed a sacar los datos de la red Zigbee hice una primera prueba con XML-RPC, es de f\u00e1cil implementaci\u00f3n, pero ha sido reemplazado por el SOAP, hice un peque\u00f1o desarrollo sobre Visual Basic 6 con un control ActiveX libre que me descargu\u00e9, la verdad es que funcion\u00f3, pero no me quit\u00e9 de encima la sensaci\u00f3n de ser una tecnolog\u00eda obsoleta, \u00bfc\u00f3mo te puedes poner a desarrollar sobre tecnolog\u00edas obsoletas y quedarte tan tranquilo?<\/p>\n<div id=\"attachment_946\" style=\"width: 388px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/06\/Bob-Marley.png\"><img aria-describedby=\"caption-attachment-946\" loading=\"lazy\" class=\"size-full wp-image-946\" title=\"Bob-Marley\" src=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/06\/Bob-Marley.png\" alt=\"\" width=\"378\" height=\"323\" srcset=\"https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/06\/Bob-Marley.png 378w, https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/06\/Bob-Marley-300x256.png 300w\" sizes=\"(max-width: 378px) 100vw, 378px\" \/><\/a><p id=\"caption-attachment-946\" class=\"wp-caption-text\">RESTafari<\/p><\/div>\n<p>Mi segundo intento fu\u00e9 utilizando SOAP sobre VB.NET. Me di\u00f3 la sensaci\u00f3n de ser una tecnolog\u00eda muy s\u00f3lida y muy sencilla de implementar entre dos aplicaciones programadas en VB.NET. Analizando las respuestas de SOAP me d\u00ed cuenta de que son muy completas, pero demasiado complicadas. La complicaci\u00f3n no es un problema para un equipo publicando servicios web y otro consumi\u00e9ndolos, de hecho es bastante transparente. El problema es que, con mucha frecuencia, en el tema que nos ocupa hay un equipo con una gran capacidad de c\u00e1lculo (el que publica los servicios) y otro con muy poca capacidad de c\u00e1lculo y muy poco espacio en memoria. Que la respuesta que reciba el consumidor de los servicios web sea muy compleja (incluyendo por ejemplo informaci\u00f3n de tipos) es un problema a la hora de parsearla en un equipo con poca capacidad (en un mote por ejemplo).<\/p>\n<p>Mirando diversas API&#8217;s conocidas pude observar que las respuestas no eran tan complejas como las que proporcionaba el SOAP, por lo que conclu\u00ed que ten\u00eda que haber una tecnolog\u00eda de una complejidad \u00abintermedia\u00bb entre el XML-RPC y el SOAP. La tecnolog\u00eda es REST. Seg\u00fan la definici\u00f3n de Wikipedia:<\/p>\n<p>La <strong>Transferencia de Estado Representacional<\/strong> (Representational State Transfer) o <strong>REST<\/strong> es una t\u00e9cnica de arquitectura software para sistemas <a title=\"Hipermedia\" href=\"http:\/\/es.wikipedia.org\/wiki\/Hipermedia\">hipermedia<\/a> distribuidos como la <a title=\"World Wide Web\" href=\"http:\/\/es.wikipedia.org\/wiki\/World_Wide_Web\">World Wide Web<\/a>. El t\u00e9rmino se origin\u00f3 en el a\u00f1o <a title=\"2000\" href=\"http:\/\/es.wikipedia.org\/wiki\/2000\">2000<\/a>, en una tesis doctoral sobre la web escrita por <a title=\"Roy Fielding\" href=\"http:\/\/es.wikipedia.org\/wiki\/Roy_Fielding\">Roy Fielding<\/a>, uno de los principales autores de la especificaci\u00f3n del protocolo <a title=\"HTTP\" href=\"http:\/\/es.wikipedia.org\/wiki\/HTTP\">HTTP<\/a> y ha pasado a ser ampliamente utilizado por la comunidad de desarrollo.<\/p>\n<p>Si bien el t\u00e9rmino <em>REST<\/em> se refer\u00eda originalmente a un conjunto de principios de arquitectura \u2014descritos m\u00e1s abajo\u2014, en la actualidad se usa en el sentido m\u00e1s amplio para describir cualquier interfaz web simple que utiliza <a title=\"XML\" href=\"http:\/\/es.wikipedia.org\/wiki\/XML\">XML<\/a> y <a title=\"HTTP\" href=\"http:\/\/es.wikipedia.org\/wiki\/HTTP\">HTTP<\/a>, sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes como el protocolo de <a title=\"Servicio web\" href=\"http:\/\/es.wikipedia.org\/wiki\/Servicio_web\">servicios web<\/a> <a title=\"SOAP\" href=\"http:\/\/es.wikipedia.org\/wiki\/SOAP\">SOAP<\/a>. Es posible dise\u00f1ar sistemas de servicios web de acuerdo con el estilo arquitectural REST de Fielding y tambi\u00e9n es posible dise\u00f1ar interfaces <a title=\"XMLHttpRequest\" href=\"http:\/\/es.wikipedia.org\/wiki\/XMLHttpRequest\">XMLHTTP<\/a> de acuerdo con el estilo de <a title=\"RPC\" href=\"http:\/\/es.wikipedia.org\/wiki\/RPC\">llamada a procedimiento remoto<\/a> pero sin usar SOAP. Estos dos usos diferentes del t\u00e9rmino <em>REST<\/em> causan cierta confusi\u00f3n en las discusiones t\u00e9cnicas, aunque <a title=\"RPC\" href=\"http:\/\/es.wikipedia.org\/wiki\/RPC\">RPC<\/a> no es un ejemplo de REST.<\/p>\n<p>Y, como premio para el que haya llegado hasta\u00a0aqu\u00ed, explicar\u00e9 el misterio de la foto del art\u00edculo:<\/p>\n<p>Los sistemas que siguen los principios REST se llaman con frecuencia <em>RESTful<\/em>; los defensores m\u00e1s ac\u00e9rrimos de REST se llaman a s\u00ed mismos <em><span style=\"text-decoration: underline;\">RESTafaris<\/span><\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dicen en mi tierra que el que sabe de todo no es especialista en nada, me siento claramente identificado con esta frase. Por otro lado y en mi defensa citar\u00e9 una frase de Danny Kaye \u00abUn especialista es una persona&hellip; <br \/><a class=\"read-more-button\" href=\"https:\/\/blog.whatsbee.net\/?p=943\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"categories":[15,21,11],"tags":[56,109,128,152,164,165,166,173,197],"_links":{"self":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/943"}],"collection":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=943"}],"version-history":[{"count":0,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/943\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}