Video: Клиент-серверная архитектура в картинках (Listopad 2024)
Jednou z věcí, které jsem za poslední měsíce našel ve vývojovém světě zajímavou, je to, jak moderní aplikace přecházejí zpět k umístění většího množství inteligence do klienta místo na server. Model klient-server není samozřejmě nic nového: je to způsob, jakým byly tradiční aplikace vytvářeny roky, s bohatými klientskými aplikacemi, které hovoří s aplikacemi na straně serveru. V době Webu a dokonce i Webu 2.0 se však fokus přesunul do webových aplikací, ve kterých byla většina inteligence na webovém serveru (obvykle v aplikačních serverech založených na Java) a klient byl jen jednoduchou webovou stránkou prohlížeč, kde jste při každém kliknutí načetli novou stránku.
Ale v poslední době maturace HTML5, CSS, a zejména JavaScript, vede vývojáře k tomu, aby do samotné webové stránky vložili skutečnou inteligenci a skutečné zpracování. Zejména jsme zaznamenali vzestup řady klientských rámců založených na JavaScriptu, které usnadňují vytváření inteligentních front-endů, které fungují zcela v moderním webovém prohlížeči. Jedná se obvykle o prohlížeče založené na enginu Webkit, včetně prohlížečů Chrome a Safari, ale zdá se, že většina aplikací funguje dobře i v současných verzích prohlížeče Firefox a Internet Explorer. Skončíte se složitější webovou stránkou, která se dynamicky mění a podle potřeby stahujete data ze serveru.
Největší pozornost se zdá být věnována zejména třem rámcům MVC: Backbone.js, Ember.js a Angular.js. (MVC je zkratka pro model-view-controller - je to v podstatě architektura za výpočetní technikou webového klienta. "Js" je zkratka pro JavaScript.) V podstatě je to všechno vyrůstání přístupu AJAX (asynchronní JavaScript a XML) populární v posledních deseti letech nebo ano, ale stávají se mnohem vyspělejšími a téměř standardizovanými. Cílem je vložit do prohlížeče více informací o stavu a inteligenci a poté se prohlížeč spojit s REST API na straně serveru.
Páteř je možná nejzákladnější a nejmenší z těchto rámců; používá se v různé míře na mnoha oblíbených webech. Ember vyrostl z rámce nazvaného Sproutcore, který podporovala společnost Apple, a je mnohem komplexnějším rámcem navrženým tak, aby vám umožňoval provádět stolní aplikace. Často se používá s Bootstrapem - sadou šablon pro HTML a CSS původně vytvořených zaměstnanci Twitteru. Úhel je alternativou společnosti Google, která se zdá být někde mezi - někteří lidé si myslí, že je to o něco flexibilnější nebo alespoň „méně mínění“ než Ember, ale komplexnější než páteř. (Poznámka: Google tlačí vývojáře, aby používali Angular ke zlepšení kvality kódování, ale interně ve skutečnosti používá jinou, proprietární sadu rámců.) Dokonce Microsoft přidal háčky do Visual Studio pro tyto rámce.
Vzhledem k tomu, že je web, existují desítky alternativ. Jedním z nejzajímavějších, o kterém jsem v poslední době slyšel, je Meteor, navržený pro práci s JavaScriptem na straně klienta i serveru. Ale to je stále velmi brzy a já zatím neznám žádné skutečné uživatele. Mezitím si více vývojářů hraje s Node.js, často používanými pro implementaci JavaScript na straně serveru.
Výhoda těchto rámců se zdá být jasná. Bohaté webové klientské aplikace jsou výkonnější než tenké klientské aplikace, kde vše běží na serveru, mohou poskytovat lepší uživatelské rozhraní a nabízet možnost offline informací. Pomocí těchto rámců můžete vytvářet bohaté webové klientské aplikace mnohem rychleji, než byste mohli tím, že vše vytvoříte od nuly a využijte komunit vyvíjejících se kolem každé z nich.
Nejdůležitější je, že můžete vytvořit mobilní aplikace, které se přizpůsobí různým zařízením, aniž byste museli psát konkrétní nativní aplikace. Stále existuje dobrý argument, který je třeba učinit pro nativní aplikace, které mohou přímo řešit konkrétní funkce každé platformy. Mnoho vývojářů však zjistilo, že takové rámce mohou dramaticky urychlit vývoj napříč platformami, zejména pokud se používají ve spojení s věcmi, jako je PhoneGap, mobilní framework s otevřeným zdrojovým kódem zakoupený společností Adobe a otevřený zdroj do projektu Apache Cordova.
Mobilní samozřejmě přináší svá vlastní omezení, včetně rychlosti procesorů, a možná ještě důležitější je, rychlost - a někdy i nedostatek - konektivity. Jedním z důvodů, proč lidé mají rádi aplikace přes webové stránky, je to, že si často můžete stáhnout základní funkčnost přes Wi-Fi nebo rychlé připojení a pouze stáhnout potřebná data, nikoli celý design. Balíčky jako PhoneGap tento problém řeší vložením JavaScriptu do stažené aplikace.
S takovými rámci však existují další problémy. Definice dělá více práce na straně klienta zvyšuje složitost versus jednoduchá aplikace pouze pro server, a opravdu, některé nevýhody starého modelu klient-server vrátit. Vývojáři musí spravovat stát na obou stranách. Kód na dvou místech znamená, že se musíte soustředit na bezpečnost na obou místech. Vzhledem k tomu, že vývojový tým často pracuje na klientovi a na serveru na serveru, máte další problémy s komunikací. Na druhou stranu se některá starší čísla klient-server nevrátí a místo toho si ponecháte výhody webového softwaru. Toto je svět zaměřený více na standardy a komunitou, takže nejste tak závislí na jediném proprietárním prostředí. Rozdělením částí na straně klienta a na straně serveru můžete mít také čistší a jednodušší implementaci na straně serveru, která pouze provádí zpracování a ne uživatelské rozhraní, a v důsledku toho může vyžadovat méně zdrojů. Stále máte tu výhodu, že můžete aktualizovat všechny klienty najednou, protože prohlížeč obvykle vyvolává kód ze serveru, když je vyvolána aplikace.
Zřetelně vidíme posun směrem k inteligentnějším webovým klientům - ne v každém případě, ale v mnoha nových aplikacích. Je mnohem těžší vzít starší aplikace a přesunout je do tohoto modelu, ale některé z nich také vidíme. Není to úplně starý model klient-server, ale je to mnohem blíže.