čtvrtek 18. října 2007

Podcast #17

Repro here, podcast here.

Obojživelník jménem Eclipse RAP

Eclipse Rich Ajax Platform (RAP) je tak trochu zvláštní framework. Na první pohled se zdá, že je to konkurence Google Web Toolkitu (můj článek o GWT), na ten druhý je to trochu jinak. Cílem RAPu je umožnit vytvářet aplikace postavené na Eclipse RCP, které kromě desktopu poběží i v prostředí webového prohlížeče. Přístupem tedy RAP konkuruje spíše Adobe AIR.

Místo složitého popisu vás odkážu na dema, která ukazují RAP v plné kráse.

Architekturu RAPu, v porovnání s tím jak vypadá Eclipse RCP, ilustruje následující obrázek.

Eclipse RAP architekture v porovnání s Eclipse RCP

Ale co bych vám tu opakoval, co již napsali jiní.

úterý 16. října 2007

A REST

Representational State Transfer (REST) je koncept pro design distribuované architektury. Distribuovaná architektura v tomto smyslu znamená, že části programu běží na různých strojích a pro svojí komunikaci využívají síť. Pod programem si můžete představit například webovou aplikaci, kde internetový prohlížeč komunikuje s webovým serverem, aplikaci pro výměnu dat mezi finančními institucemi, kde dochází k vzájemnému volání mezi servery.

REST navrhnul a popsal v roce 2000 Roy Fielding v rámci disertační práce Architectural Styles and the Design of Network-based Software Architectures. V kontextu práce je nejzajímavější kapitola 5, ve které Fielding odvozuje principy RESTu na základě známých přístupů k architektuře.

Základní principy RESTu

  • stav aplikace a chování je vyjádřen takzvaným resourcem (klíčová abstrakce)
  • každý resource má unikátní identifikátor (URL, URN)
  • je definován jednotný přístup pro získání a manipulaci s resourcem v podobě čtyř operací CRUD (Create, Read, Update, Delete)
  • resource může mít různé reprezentace (XML, HTML, JSON, SVG, PDF)
Komunikační protokol
  • client/server - slouží k oddělení odpovědností
  • bezestavovost (stateless)- každý požadavek musí obsahovat všechny informace nutné k jeho vykonání
  • cache - každý požadavek může být explicitně označený jako cacheovatelný či necacheovatelný, to umožňuje transparentně zvýšit výkonnost přidáním cache mezi klient a server
  • Code-On-Demand - funkcionalita klienta může být rozšířena kódem, který zašle server (například JavaScript)
  • vrstevnatost - umožňuje skládání vrstev poskytujících služby za účelem zvýšení variabilnosti (cache, transformace, rozložení zátěže atd.)

Existují samozřejmě i další přístupy k řešení distribuované architektury jako Remote Procedure Call (RPC). Obecně můžeme říci, že rozdíl mezi RESTem a RPC je ve dvouch rovinách, sémantice operací a tím co se distribuuje. Sémantika operací v RESTu je konečná a tvoří ji pouze CRUD (create, read, update, delete) na daném resourcu. Oproti tomu v RPC sémantika odpovídá metodám, které jsou volány. V RESTU se distribuuje stav (data představovaná resourcem), oproti chování, které se distribuuje v RPC.

Výhody REST konceptu oproti RCP jsou následující.

  • jednoduché a změnám odolné rozhraní - snadná rozšiřitelnost
  • malé nároky na klienta z hlediska porozumění sémantice operací
  • transparentnost - resource lze na "cestě" velice snadno cahceovat, transformovat atd.

Nevýhody REST konceptu oproti RPC jsou následující.

  • klient musí s každým požadavkem posílat všechny informace nutné k jeho vykonání
  • chybějící podpora na úrovni middleware - všechno si člověk musí napsat sám

Právě chybějící podpora na úrovní middleware je asi největším problémem protože vede k velkému nepohodlí při práci s RESTem. Samozřejmě existují výjimky jako Google a jeho GData, pomocí kterých je využívání Google služeb přes REST pohodlné. GData mají klientské knihovny pro Java, JavaScript, .NET, PHP, C++ a Python.

V Jave se můžeme těšit na JSR 311 - Java API for RESTful Web services, které doufejme přinese usnadnění práce s RESTEm v Jave. Referenční implementace této specky nese název Jersey a můžete se o ní něco dozvědět v rozhovoru RESTful Web Services and Jersey. Spíše bych vám doporučil prezentaci JSR 311: JAX-RS, ve které jsou vidět praktické ukázky.

REST bude tématem některého z příštích CZJUGu a o Jersey bychom se měli pobavit přímo s jedním z jeho autorů v dalších podcastech. Na závěr přidávám pár zajímavých odkazů.