Kormányablak, Ügyfélkapu, magyarorszag.hu, kormany.hu
KORMÁNYABLAK, ÜGYFÉLKAPU - A ZÁRT AJTÓK MÖGÖTT...
(nem hivatalos e-kormányzati témájú oldal)
  
BEMUTATKOZÁS 
E-KÖZIGAZGATÁS 
IT BIZTONSÁG 
  
































  Mottó:
Egy dolog annyira egyszerű,
amennyire csak lehetséges,
de semmivel sem egyszerűbb.
/Albert Einstein/
2011. április 2.  
 Web Service, vagy amit akartok 
   
A web service, mint fogalom gyakran merül fel az e-közigazgatás kapcsán is, mint valami olyan dolog, amitől csodát várnak. És ez részben igaz is, valóban sokmindenre jó és egyszerű megoldást nyújthat a különböző rendszerek egymással való kommunikációjára, harmadik fél által fejlesztett alkalmazások integrálására. El kell azonban kerülni, hogy túlmisztifikálják, túl bonyolultként mutassák be a megvalósítást, hogy aztán valakik - adófizető állampolgárok által összeadott - kemény milliárdokból hozzanak létre valamilyen informatikai rendszert.

A web service szolgáltatások interfészét le kell írni XML formátumú ú.n. WSDL (Web Services Description Language) állományokkal, de ezt nagyon egyszerűen is el lehet intézni, sőt, a legtöbb esetben nem is ezeket dolgozzák ki (pl. a szabványosító szervezetek), hanem a kommunikációban résztvevő üzeneteket. A dán e-közigazgatás kapcsán emlegettem már, hogy ott is inkább pl. az üzleti nyelv (OASIS UBL) üzeneteit dolgozták ki, a webes portálon is inkább XML sémák találhatók WSDL állományok helyett.

Miért ne lehetne egyszerűen megoldani a web service technológiára való áttérést itthon is? Egy kaptafára le lehetne gyártani a különböző (pl földhivatali, cégjegyzékes) interfészeket leíró WSDL állományokat, amelyekben egy nagy adattömbben (gyakorlatilag egy darab bemeneti adatként) kerülnének átadásra az üzenetek, amelyeket a háttérrendszereknek kell elemezniük.

Miképp lehetne ezt megoldani? Egy példán keresztül világítanám meg. Az OASIS szabványosító szerv DSS protokollja web service felületen keresztül elérhető elektronikus aláírási szolgáltatást írja le, de nem annak web service felületét (WSDL állományt), hanem az üzeneteit (XML sémákat).

Próbáljunk most ezek elé egy egyszerű web service leíró állományt (WSDL) szerkeszteni lépésről-lépésre!

A "service" elemben kell felsorolnunk a különböző "port" és "binding" azonosítókat. Az előbbi azt mondja meg, hogy milyen funkciók érhetők el az adott web service mögött, az utóbbi pedig azt jelzi, hogy azokat milyen protokoll révén lehet elérni (pl. SOAP). A "service" elemen belül kell megadnunk magának a web service felületnek az elérhetőségét is, azaz milyen URL-re kell küldeni az adott kérést (pl. https://ws.kormany.hu/ws.php, https://ws.kim.gov.hu/ws.php).



A "binding" elemnél érdemes a HTTP protokoll azonosítóját megadnunk ("transport" attribútum), a többi protokollt (pl. SMTP) nem is nagyon szokták használni web service kommunikációnál. A "style" attribútum értéke "rpc" kell, hogy legyen, ha nem csak kérést akarunk küldeni a kiszolgáló felé, hanem attól valamilyen feldolgozható visszatérési értékeket, választ is várunk. Az egyes függvények meghivatkozását SOAP esetében a "soapAction" attribútumban kell megadni (pl. XAdES.PHP-Sign), amelyet a hívásoknál a HTTP üzenet Header elemei között kell szerepeltetni. A "use" attribútumban lehet jelezni, hogy az üzenet valamilyen transzformáció révén módosítva ("encoded") kerül-e átküldésre, vagy sem ("literal").



A "portType" elem viszonylag egyszerű, ez írja le, hogy az adott hívásnak (pl. Sign) milyen bemeneti és kimeneti üzenetei vannak (pl. elküldésre kerülnek egy számla adatai eladó, vevő, termék neveivel, amire a válaszban visszajön egy kész e-számla XML).



A "message" elemnél kerül megadásra, hogy az adott üzenet (kérés, válasz) felépítése hogy kerül kifejtésre a "types" elemben ("element" vagy "types"). Érdemes itt is egyszerűre venni a figurát! Maga a lényeg, a strukturált üzenet teljes egészében lehet egy base64 karaktersorozat, ami végső soron egy sima xs:string típus.



A "types" elemnél kell kifejteni az egyes üzenetelemeket. A legegyszerűbb (pl. base64) esetben az üzenetek típusa egy alaptípusként (pl. xs:string) megadható, nem kell további lebontás.



Az utolsó lépés az általunk szerkesztett WSDL állomány ellenőrzése, azaz megfelel-e a szintaktikai és a szemantikai követelményeknek. Szerencsére kedvenc XML-szerkesztő alkalmazásunkkal két gomb megnyomásával ezt végre is tudjuk hajtani. A sárga (well-formed) és zöld (valid) pipákat látva tulajdonképpen kész is van a WSDL állományunk!



A WSDL állomány megvan, de kell mögé egy szerver oldali kód, illetve elé egy hívó alkalmazás a kliens oldalra. Nem kell megijedni, nem szabad megintcsak sok számjegyes tételekre gondolni a pénzügyi becsléseknél, hiszen akár ingyenes, parancssorból hívható segédalkalmazással (pl. cURL) is meg lehet szólítani egy web service szolgáltatást! A cURL nagyon népszerű, létezik parancssoros exe állományként futtatható változata, de pl. PHP környezetben lehet használni library-ként is, mindent tud, amire szükségünk van: el tud küldeni egy üzenetet (pl. SOAP XML) a megadott web service URL-re (HTTP, HTTPS) és be tudja állítani a HTTP fejlécében a "soapAction" attribútumot.







Természetesen meg lehet csinálni igényesebben is a kliens és szerver kódot: írtam egy egyszerű mintát PHP-ban, amely a SOAP osztályt használja.

Kapcsolódó anyagok:
 vissza 
   
  info@kormanyablak.org
info@ugyfelkapu.info