-
Saptamana trecuta a trebuit sa realizez un mic proiect. Cerinta era scurta: interoperabilitate. Avand in vedere ca nu am folosit niciodata Adobe AIR am zis ca este o oportunitate buna sa incerc.
Rezultatul este o mica aplicatie de project management. Pentru server am folosit PHP + SOAP + Zend Framework, pentru client am folosit Adobe AIR cu JavaScript.
Serverul l-am rezolvat in cateva linii:
1<?php 2// clasa de autoload pentru Zend Framework 3include 'Zend/Loader/Autoloader.php'; 4 5// clasa care va rezolva cererile SOAP 6include 'SOAP.class.php'; 7 8// initializez autoloader 9Zend_Loader_Autoloader::getInstance(); 10 11// daca se cere fisierul WSDL pentru descriere 12if(isset($_GET['wsdl'])) { 13 $autodiscover = new Zend_Soap_AutoDiscover(); 14 $autodiscover->setClass('test'); 15 $autodiscover->handle(); 16// daca se face un request SOAP 17} else { 18 $soap = new Zend_Soap_Server("http://localhost/soap/index.php?wsdl"); 19 $soap->setClass('test'); 20 $soap->handle(); 21} 22 23?>
Descriptorul se construieste automat folosind comentarile de tip PHP Documenter din clasa care se ocupa de apelurile SOAP, in acest caz clasa se numeste “test”.
Acum ca am trecut de partea usoara m-am apucat de clientul Adobe AIR urmand acesti pasi simpli:
- Descarcat si instalat Aptana Studio
- Instalat plug-in Adobe AIR
- New project -> Adobe AIR
- and voila! Codarea poate incepe!
Adobe AIR foloseste ca motor pentru JavaScript Webkit. Suna cunoscut? Webkit este folosit de Safari si Google Chrome. Deci codul JavaScript nu trebuie sa fie compatibil decat cu Webkit!
Evident exista un “dar” si un plus. “Dar”-ul este ca exista niste restrictii, de exemplu “eval” nu se poate folosi decat pentru decodare de JSON, iar textul introdus intr-un element direct (ca text) nu poate fi rulat:
1div.innerHTML = "<a onclick=\"alert('ceva')\" href=\"#\">click</a>";
Link-ul va ajunge in element dar nu va rula nimic la onclick pentru ca paramentul a fost trimis ca text.
Asta a fost un dezavantaj destul de mare pentru mine, dar am reusit sa gasesc o alternativa construind elementele html folosind DOM si adaugand actiuni cu addEventListener.
Pe scurt Adobe AIR are formula:
1Adobe AIR = (Webkit)Web Development - security + air framework.
Mi se pare foarte usor de dezvoltat in Adobe AIR pentru un Web Developer care vrea sa realizeze o aplicatie desktop.
Evident nu este foarte rapid si nu mi se pare o solutie buna pentru programe foarte complexe. Dar daca vine vorba aplicatii medii si mici, daca ar trebui sa aleg intre Adobe AIR si PHP GTK de exemplu, prima varianta mi se pare mult mai viabila si usor de folosit!
Pana la urma proiectul a fost gata in mai putin de 3 zile iar grafica a iesit genial! Nici nu pare o aplicati facut folosind doar HTML si JavaScript!
-
Siteul www.infovalutar.ro pune la dispozitie cursul oficial BNR si BCE in diferite formare pentru programatori. Printre aceste formate este si Web Service (SOAP), pentru care nu exista decat un exemplu in C#.
Zilele trecute am avut nevoie de un mic exemplu de SOAP, din pacate nu am reusit sa fac pe moment clientul sa mearga, iar cum in seara asta am avut putin timp liber am vrut sa-i dau de cap.
De fapt nu este chiar atat de complicat:
1// obiectul SOAP 2$client = new SoapClient("http://www.infovalutar.ro/curs.asmx?WSDL"); 3 4// metoda cu data ultimei actualizari 5$result = $client->lastdateinserted(); 6 7// pentru afisare apelam singura proprietate pe care o are obiectul intors 8echo 'Data ultimei actualizari: '.$result->LastDateInsertedResult.PHP_EOL; 9 10// apelam o metoda cu un parametru 11$result = $client->GetLatestValue(array('Moneda'=>'EUR')); 12 13// afisam cursul apeland singura proprietate pe care o are obiectul intors 14echo 'Euro: '.$result->GetLatestValueResult.PHP_EOL; 15 16// apelam o metoda cu un parametru 17$result = $client->GetLatestValue(array('Moneda'=>'USD')); 18 19// afisam cursul apeland singura proprietate pe care o are obiectul intors 20echo 'USD: '.$result->GetLatestValueResult.PHP_EOL;
Chestile care mi se par ciudate sunt: metodele care au parametrii au nevoie in parametru de un array cu tip si valoare, iar obiectul intors are o singura proprietate. Practic de la aceste doua lucruri m-am pierdut eu.
Dar acum ca este gata putem sa ne uitam linistiti cat de mult a crescut euro.