Komunikace mezi microservices v XML

anonym

Komunikace mezi microservices v XML
« kdy: 02. 07. 2018, 21:09:40 »
Jsem na novém projektu, jedná se o klasickou SOA se Springem. Fascinuje mě, že jsem opět narazil na mapování XSD na Java classy. Vzhledem k tomu, že to celé běží na Javě, tak doprčic... mám přece nějaké Java POJO objekty a když už chci vézt komunikaci mezi službami přes XML, tak by to nemělo nic měnit na tom, že XSD nepotřebuju vůbec řešit. POJO může mít svou vlastní validaci. Stejně ta validace v tom XSD je taková nic moc. Např. nezvaliduju si tam věci typu "zadané PSČ existuje". Chápu použití toho XML jen jako možnost, jak mít pro člověka čitelná data, ale používat tam i validaci? Mě přijde, že ty XSD soubory jsou oproti Java třídám děsně nepřehledné. Tak proč to lidi vlastně vůbec dělají, když nemusí?


Re:Komunikace mezi microservices v XML
« Odpověď #1 kdy: 02. 07. 2018, 21:47:31 »
Klasické SOAP služby vedeli používať XSD ako súčasť WSDL, teda strojovo spracovateľného kontraktu. Výhodou je, že z WSDL/XSD viete vygenerovať klientsky kód.

Okrem toho, ak príde na server SOAP správa, tak stačí ju validovať oproti XSD a ak validácia zlyhá už na tejto vrstve, tak sa dá správa zahodiť. To je pre prípady, keď PSČ je "PRAHAOSEM".

To je samozrejme len prvá hradba validácie, okrem toho je častejšia validácia POJO objektov (Vaše "PSČ neexistuje").

Pozrite sa, či náhodou nemáte SOAPovú službu. Ak áno, tak XML sú jediná normálna možnosť. Dôvody sú viaceré: typicky legacy klienti alebo bežný korporátny ekosystém, kde SOAP je stále štandardom.

Franta <xkucf03/>

Re:Komunikace mezi microservices v XML
« Odpověď #2 kdy: 02. 07. 2018, 22:13:19 »
XSD je jazykově/platformě nezávislé a umožňuje tak definovat takto nezávislá/neutrální rozhraní. Na každém konci „drátu“ může být klidně software psaný v jiném jazyce. Navíc je to standard, kterému každý rozumí a bude schopný se na něj napojit. Pokud by ses chtěl omezovat jen na jeden jazyk, nemusíš používat XML, ale můžeš použít nějakou binární serializaci nativní pro daný jazyk (a pro všechny ostatní to bude černá skříňka).

Kit

Re:Komunikace mezi microservices v XML
« Odpověď #3 kdy: 02. 07. 2018, 22:50:28 »
Soubory XML či XSD jsou jen serializovaným formátem datového stromu. XSD si klidně můžeš vygenerovat v Javě - soubory XSL si také nechávám generovat skriptem v PHP ze svého metajazyka. Významným benefitem je, že je to přenositelné mezi všemi běžně používanými platformami i jazyky.

.

Re:Komunikace mezi microservices v XML
« Odpověď #4 kdy: 03. 07. 2018, 00:37:28 »
Používat na microservices XML je šílenství, používají se binární protokoly jako grpc nebo thrift. Zajistí totéž (včetně generování kódu) a je to jednodušší a rychlejší.


BoneFlute

  • *****
  • 2 010
    • Zobrazit profil
Re:Komunikace mezi microservices v XML
« Odpověď #5 kdy: 03. 07. 2018, 02:19:57 »
... kde SOAP je stále štandardom.
Co jiného?

anonym

Re:Komunikace mezi microservices v XML
« Odpověď #6 kdy: 03. 07. 2018, 05:41:30 »
Používat na microservices XML je šílenství, používají se binární protokoly jako grpc nebo thrift. Zajistí totéž (včetně generování kódu) a je to jednodušší a rychlejší.

Nevim proc by to melo byt silenstvi, v SOA je dulezite to, ze data jsou citelna cloveku, mozna je to dulezitejsi, nez rychlost prenosu, ktery probiha stejne pres intranet. Kdyz nepouzijes XML, jak si budes pak provolavat API pri testovani?

anonym

Re:Komunikace mezi microservices v XML
« Odpověď #7 kdy: 03. 07. 2018, 06:07:27 »
Myslim ze zaver by mohl byt ten, ze pokud je to prostredi velke korporace, treba banka, a jedna se o intranet, tak by se meli lidi na SOAP z vysoka vsrt, protoze tam stejne vsude pobezi Java a pak staci sluzbe udelat REST rozhrani, vystavit z ni DTO tridy i s validaci, at si je okolni sluzby muzou naimportovat pres Maven, a pro prenos dat pouzit serializaci do XML. A je to hotovo.

Re:Komunikace mezi microservices v XML
« Odpověď #8 kdy: 03. 07. 2018, 08:59:17 »
Nechcem obhajovať SOAP, ale na niektorých, napr. bankových projektoch je bežné podpisovanie a kryptovanie správ (XML DSig), čo teda v RESTe nie je dostupné.


Franta <xkucf03/>

Re:Komunikace mezi microservices v XML
« Odpověď #9 kdy: 03. 07. 2018, 09:00:04 »
Myslim ze zaver by mohl byt ten, ze pokud je to prostredi velke korporace, treba banka, a jedna se o intranet, tak by se meli lidi na SOAP z vysoka vsrt, protoze tam stejne vsude pobezi Java a pak staci sluzbe udelat REST rozhrani, vystavit z ni DTO tridy i s validaci, at si je okolni sluzby muzou naimportovat pres Maven, a pro prenos dat pouzit serializaci do XML. A je to hotovo.

Akorát v tom mavenovském projektu stačí mít to XSD + úlohu pro JAXB, která něj ty třídy vygeneruje. Pohodlné je to stejně a navíc je to použitelné i pro jiné jazyky než Javu.

(Javu mám sice rád, ale když to jde prakticky zadarmo udělat přenositelné a nezávislé na konkrétním jazyku/platformě, tak proč to neudělat?)

.

Re:Komunikace mezi microservices v XML
« Odpověď #10 kdy: 03. 07. 2018, 14:57:22 »
Používat na microservices XML je šílenství, používají se binární protokoly jako grpc nebo thrift. Zajistí totéž (včetně generování kódu) a je to jednodušší a rychlejší.

Nevim proc by to melo byt silenstvi, v SOA je dulezite to, ze data jsou citelna cloveku, mozna je to dulezitejsi, nez rychlost prenosu, ktery probiha stejne pres intranet. Kdyz nepouzijes XML, jak si budes pak provolavat API pri testovani?
SOA != microservices

.

Re:Komunikace mezi microservices v XML
« Odpověď #11 kdy: 03. 07. 2018, 15:06:58 »
Na další otázky doporučuji jen nakouknout, třeba sem (http://thrift-tutorial.readthedocs.io/en/latest/intro.html), zvláště pak kapitolu Thrift protocol stack. Tam pochopíte, proč se to používá a jaké to má výhody. Taky je dobré si uvědomit, že když mluvíme o microservices, měli bychom mít představu alespoň desítky samostatných (mikro)serverů, na kterých služby běží, vše v clusteru se zastupitelností a s plnou autodiscovery služeb. Vy máte pravděpodobně na mysli jednu instanci Tomcatu, na které ty služby běží. Tohle opravdu microservices nejsou.