Nechci tímto článkem rozpoutávat flamewar, ani polemiky, zda je lepší PHP nebo ASP.NET – každé má své využití v odlišných scénářích. To jen tak pro začátek. Tenhle článek se pozastavuje nad tím, jak jsou některé věci (PHP) znásilňovány k jiným věcem, na které nejsou vhodné (SOAP služby).
Kolega Filip – ten, díky němuž jsem šel na školení :) – řeší zajímavý problém. V rámci spolupráce s jednou firmou (není podstatné s jakou) potřebuje vzdáleně volat jejich API a to je poskytnuto pomocí webové služby na protokolu SOAP. To je super. Háček je v tom, že zase tak super to není, protože vzdálená implementace nerespektuje standardy. A to navíc standardy, které osobně považuji za mnohem důležitější než (X)HTML a CSS – modly spousty webdesignérů. Konkrétně jde o WSDL. WSDL je formát, který formálně popisuje rozhraní služby, struktury využívané při vzdálené komunikaci a datové typy vlastností struktur. Podle tohoto popisu můžete nechat vygenerovat Proxy třídy pro komunikaci se službou, tak že se služba chová jako jedna z tříd vašeho projektu. A pomalu se dostáváme k nadpisu :) Jelikož PHP formálně nezná datové typy – je typované dynamicky – nedochází ke správné interpretaci typů vlastností struktur. To by zase tak úplně nevadilo, že místo Integerů a Booleanů vám choděj Stringy, to se dá přežít, ale horší je, že PHP přidává do SOAP zpráv elementy, které nejsou ve WSDL popsány a tudíž se s nimi nepopere parser.
Můj odhad je, že služba je napsaná v PHP 5, které má podporu SOAPu, vlastní zkušenosti s tím ale nemám. Na PHP 4 jsem zkoušel framework nuSOAP, který má trochu odlišné výstupy než zmiňovaná služba. PHP 5, tedy přináší možnost vytvářet a konzumovat webové služby běžící na protokolu SOAP, ale jeho výstupy si pravděpodobně neodpovídají. WSDL by totiž měl popisovat, jak bude výsledná SOAP zpráva vypadat a konzument se na to spoléhá, ale výstupní zpráva má úplně jiný formát. To pěkně děkuju. To si mám napsat vlastní WSDLko, abych mohl konzumovat cizí službu, na kterou se nemohu spolehnout, nebo ručně parsovat hodnoty z příchozích zpráv a skládat zprávy odchozí? A co když se za čas služba pozmění? Bodejď by pak WS nebyly považovány za další webovou bublinu, s tímhle přístupem to ani jinak nejde…











Komentáře
Jakub Podhorský
21.42 - 9. května 2006 | #
borek
21.58 - 9. května 2006 | #
David Grudl
22.21 - 9. května 2006 | #
jow
22.48 - 9. května 2006 | #
Aleš Roubíček
06.58 - 10. května 2006 | #
Petr
19.21 - 10. května 2006 | #
Aleš Roubíček
21.19 - 10. května 2006 | #
s
09.05 - 13. srpna 2006 | #
Aleš Roubíček
07.33 - 14. srpna 2006 | #
MK
00.55 - 3. července 2008 | #
vm
15.04 - 23. února 2009 | #
Aleš Roubíček
18.51 - 23. února 2009 | #
Chaos
20.58 - 28. března 2010 | #
Gonzi
21.16 - 28. března 2010 | #
Aleš Roubíček
07.16 - 29. března 2010 | #
Místo pro tvůj názor