- Падзеі нізкага ўзроўню
- Кампаненты і іх размеркаванне
- Падзея мадэль
- Сілы
- Слабыя бакі
- Няма модных графічных інтэрфейсаў
- SEO
- Рэзюмэ - Мінусы
Vaadin - гэта сталая сетка для распрацоўкі багатых інтэрнэт-прыкладанняў. Стварэнне вэб-графічных інтэрфейсаў з Vaadin адчувае сябе як распрацоўка настольнага прыкладання, якое выдатна, зручна і хутка. Аднак ёсць сітуацыі, калі Ваадын не падыходзіць. У гэтым артыкуле мы разгледзім архітэктуру Ваадзіна і адзначым яе моцныя і слабыя бакі. Давайце пачнем.
Vaadin дазваляе ствараць багатыя Інтэрнэт-прыкладанні (RIA). RIA спрабуюць быць настолькі рэагаванымі і інтэрактыўнымі, як настольнае прыкладанне (менш перазагрузка старонак; абмен часткамі старонкі з дапамогай маніпуляцыі AJAX і DOM). Vaadin выходзіць нават за крок, ствараючы вэб-прыкладанне з адной старонкай (SPA) (без перазагрузкі старонкі наогул).
Адзіная мова праграмавання - гэта Java. Ніякіх вэб-інтэрфейсных тэхналогій, такіх як JavaScript ці HTML, не патрабуецца. Каб атрымаць уражанне ад таго, як вы праграмуеце графічны інтэрфейс у Vaadin, звярніцеся да прыкладу Addressbook на Vaadin.org:
Перш за ўсё, давайце паглядзім на архітэктуру Ваадзіна. Гэта важна для наступнай ацэнкі.
Падзеі нізкага ўзроўню
Важным момантам варта заўважыць асінхронныя паведамленні, якія абменьваюцца паміж кліентам і серверам на аснове дзеянняў карыстальніка. Вы можаце бачыць гэта ў Дадатак адраснай кнігі , Давайце разгледзім, якія паведамленні адпраўляюцца на сервер, калі я націскаю на кнопку, каб выдаліць абраны кантакт.
Падзеі нізкага ўзроўню асінхронна абменьваюцца паміж кліентам і серверам
Кліент не кажа «выдаліць гэты кантакт» на сервер (семантычнае падзея). Ён проста заяўляе, што "націснутая кнопка 74" (падзея на нізкім узроўні). У паведамленні ўтрымліваецца толькі інфармацыя нізкага ўзроўню пра ўзаемадзеянне карыстальніка. У гэтым паведамленні няма логікі прыкладанняў. Толькі сервер ведае, што значыць націск кнопкі азначае семантычна. Уся логіка прыкладання знаходзіцца выключна на серверным боку.
Кампаненты і іх размеркаванне
На наступным малюнку ілюструюцца кампаненты Vaadin і іх распаўсюджванне:
Архітэктура Вадзіна: Размеркаванне кампанентаў
Кліент-рухавік працуе ў браўзэры і напісаны на JavaScript. Ён робіць інтэрфейс і атрымлівае ўзаемадзеянне карыстальніка і адпраўляе іх як падзеі на сервер. Браўзэр працуе толькі ў якасці так званай "тонкай кліенцкай платформы". Ён толькі павінен адлюстроўваць інтэрфейс і перадаваць падзеі нізкага ўзроўню на сервер. Няма ніякай канкрэтнай прыкладання сувязі паміж кліентам і серверам. Гэта перавага, паколькі логіка прыкладання не раскідана па кліенце і сэрвэры.
Серверная панэль мае логіку карыстацкага інтэрфейсу і стан кожнага кліента. Вось дзе працуе логіка прыкладання. Кожны кампанент на серверы (напрыклад, кнопка, тэкставае поле, табліца) мае кліенцкую калегу, "віджэт". Гэты віджэт ўяўляе сабой кампанент на баку кліента.
Распрацоўшчык павінен рэалізаваць толькі логіку інтэрфейсу і бэкэнд. Усе да гэтага пласта празрыстыя для распрацоўніка. Яму не трэба клапаціцца пра вэб-тэхналогіі (HTML, JavaScript) альбо кліент-сервер-камунікацыя (HTTP, AJAX, JSON-сериализация, сеансы). Ён выкарыстоўвае толькі Java API кампанентаў.
Падзея мадэль
Наступная графіка ілюструе апрацоўку падзей у Ваадіне.
Апрацоўка падзей у Ваадіне
- Карыстальнік робіць што-то ў карыстацкім інтэрфейсе, як націснуць на кнопку. Гэта выклікае падзею, якое спажываецца адпаведным віджэтам (кнопкай) у баку кліента.
- Гэта падзея сериализуется на JSON і асінхронна адпраўляе сервлету Vaadin, які працуе на серверы. Сервлет атрымлівае запыт кліента і адпраўляе падзею ў адпаведны кампанент карыстацкага інтэрфейсу. Гэта магчыма, таму што кожнае падзея (віджэта) звязана з кампанентам і дастаўляецца слухачу падзей, вызначаным у логіцы карыстацкага інтэрфейсу.
- Логіка карыстацкага інтэрфейсу (рэалізаваная распрацоўшчыкам) апрацоўвае падзею і змяняе кампаненты карыстацкага інтэрфейсу (напрыклад, устаўленне тэксту ў тэкставае поле, адключэнне кнопкі або фільтрацыю табліцы).
- Сервлет перадае дадзеныя змены інтэрфейсу ў браўзэр, адправіўшы адказ назад у браўзэр. Кліент-рухавік у браўзэры атрымлівае адказ.
- Кліент-рухавік змяняе старонку ў браўзэры, маніпулюючы DOM. Абноўлены карыстацкі інтэрфейс прадстаўлены карыстальнікам.
Сілы
Мой досвед заключаецца ў тым, што Vaadin дазваляе пісаць інтэрактыўныя і спагадлівыя вэб-прыкладанні з высокай камфортнасцю і хуткасцю распрацоўкі. Ён пастаўляецца з магутным, простым ў выкарыстанні набор кампанентаў , Яшчэ адным практычным плюсам з'яўляецца падыход да праграмавання моноглот и выкарыстанне вядомага імператыўнага стылю праграмавання графічнага інтэрфейсу. Калі ваша каманда распрацоўнікаў ужо знаёмая з Java і ўжо мае досвед працы з праграмаваннем GUI у Swing, SWT / JFace ці JavaFX, яны неадкладна стануць прадуктыўнымі. Тая ж канцэпцыя, тая ж мова. Яны не прымушаюць вывучаць JavaScript, некалькі бібліятэк JavaScript (jQuery, карыстацкі інтэрфейс jQuery, AngularJS і г.д.), вэб-метады (AJAX, сеансы, печыва, апрацоўку для браўзэра), пратаколы і фарматы (HTTP, WebSockets, JSON). Ваадын клапоціцца пра гэта. Аднак іх карысна ведаць.
Рэзюмэ - Плюсы:
- Хуткае развіццё
- Плоская крывая навучання з-за праграмавання моноглот (толькі Java)
- Распрацоўка вэб-прыкладанняў, такіх як настольнае прыкладанне.
- Добра вядомая парадыгма праграмавання карыстацкага інтэрфейсу
- Вэб-канкрэтныя праблемы з'яўляюцца празрыстымі для распрацоўшчыкаў. Яны не павінны вывучаць іх.
- Комплексны і складаны набор кампанентаў і механізм звязвання дадзеных.
- Сапраўды добрая дакументацыя і актыўная супольнасць
Слабыя бакі
Маштабаванасць
Адным з недахопаў Вадзіна з'яўляецца яго нізкая маштабаванасць. Для лепшага разумення я параўноўваю архітэктуру Vaadin з архітэктуркай тонкага сервера.
Рамкі прэзентацыі на боку сервера ў параўнанні з тонкай архітэктурай сервера
У тонкай сервернай архітэктуры логіка і стан карыстацкага інтэрфейсу размешчаны на кліенце. Для праграмавання вашых элементаў карыстацкага інтэрфейсу і логікі вы карыстаецеся бібліятэкамі HTML і Java-Script, напрыклад AngularJS. Сервер зводзіцца да пастаўшчыка дадзеных праз вэб-службу REST. Шмат запытаў не патрабуецца, таму што вам трэба толькі запытваць дадзеныя, а не логіку карыстацкага інтэрфейсу. Гэты падыход вельмі маштабуецца, паколькі стан карыстацкага інтэрфейсу знаходзіцца на кліенце (эканоміць памяць сервера), логіка карыстацкага інтэрфейсу працуе на кліенце (эканоміць выкарыстанне працэсара сервера) і выклікі ў службу REST могуць быць лёгка кэшаваны і адпраўлены з дапамогай балансавання нагрузкі. (Паведамленні REST з'яўляюцца самаапісальнымі; для апрацоўкі іх не патрабуецца стан на серверы). У цэлым гэтая архітэктура можа добра кіраваць высокім трафікам.
Гэта несапраўдна для прыкладанняў на базе Vaadin, якія ўяўляюць сабой платформу для прадстаўлення сервера. Стан і логіка карыстацкага інтэрфейсу захоўваюцца на сэрвэры, і для кожнага ўзаемадзеяння з карыстальнікам запыт павінен быць адпраўлены на сервер, каб кліент ведаў, як ён павінен рэагаваць. Гэта прыводзіць да павелічэння сеткавага трафіку і заняты сервер. Больш за тое, вы павінны захоўваць стан карыстацкага інтэрфейсу для кожнага кліента. Калі колькасць кліентаў павялічылася, вам патрэбна большая памяць сервера для захавання карыстацкага інтэрфейсу.
Аднак я настойліва рэкамендую вам прачытаць паведамленне У маштабах прыкладанняў Vaadin? , У ім гаворыцца, што Vaadin можа апрацоўваць тысячы адначасовых карыстальнікаў . Мне падабаецца падкрэсліць, што гэта вялікая колькасць і павінна быць дастаткова для многіх выпадкаў выкарыстання. Для мяне аргумент маштабаванасці выкарыстоўваецца занадта часта і нават у тых выпадках, калі серверны падыход усё яшчэ здольны справіцца з нагрузкай. Але калі вы ствараеце вэб-сайты з адкрытым доступам, Vaadin не падыходзіць, паколькі ён не можа маштабавацца, як і іншыя падыходы - з-за яго архітэктуры.
« Ваадын ніколі не быў пабудаваны для масіўных вэб-сайтаў, якія знаходзяцца ў грамадстве . Калі вам патрэбна маштабаванасць на ўзроўні Facebook, Vaadin - не лепшы інструмент для гэтага. Але ні на што менш, Ваадын відавочна дэманструе працу і працуе добра ». Джэнс Янсан, Ваадын. крыніца: У маштабах прыкладанняў Vaadin?
Няма модных графічных інтэрфейсаў
Vaadin вельмі хутка займаецца будаўніцтвам бізнес-прыкладанняў. «Дзелавыя прыкладанні» - гэта прыкладанні, якія ў асноўным складаюцца з формаў і табліц. Аднак, калі вы хочаце складаны і цяжкі карыстацкі інтэрфейс (напрыклад, анімацыя і карыстацкія магчымасці карыстацкага інтэрфейсу), Vaadin не падыходзіць, таму што вам патрэбны дробназярністы і прамы доступ да DOM , што з Vaadin не так проста. У гэтым выпадку разгледзім найманне ніндзя JavaScript і будаваць свой карыстацкі інтэрфейс непасрэдна з дапамогай вэб-інтэрфейсных тэхналогій.
SEO
Паколькі Vaadin загружае асінхроннае змесціва з дапамогай JavaScript па адным URL, SEO складана. Ёсць трукі і бібліятэкі каб зрабіць змесціва даступным для сканараў. Але яны, безумоўна, патрабуюць дадатковых намаганняў, і вынік можа быць не такім гнуткім, як вы пажадаеце. Калі SEO - самае галоўнае патрабаванне, Vaadin (альбо СПА ў цэлым) - не лепшы выбар.
Рэзюмэ - Мінусы
- Не маштабуецца ў параўнанні з іншымі архітэктурнымі падыходамі. Больш высокая нагрузка на сетку і сервер (памяць, працэсар).
- Непрыдатны для модных графічных інтэрфейсаў.
- SEO
выснову
Перш за ўсё, мне падабаецца Ваадын і ідэя, якая стаіць за ім. Vaadin спрыяе распрацоўцы багатых інтэрнэт-прыкладанняў з высокай прадукцыйнасцю і камфортам, выкарыстоўваючы выключна Java. Каб вырашыць, ці падыходзіць Vaadin для вашага праекта, неабходна ўлічваць агульныя патрабаванні (чаканая нагрузка, мэтавы рэйтынг пошукавых сістэм, патрабаванні карыстацкага інтэрфейсу)
Калі вы сутыкаецеся з нізкай або сярэдняй нагрузкай (напрыклад, для бэкэнд-сістэм або ўнутраных прыкладанняў для абранай групы карыстальнікаў), Vaadin выдатна падыходзіць. У гэтым выпадку вы можаце скарыстацца паскораным развіццём, плоскай крывой навучання і высокім камфортам. Калі ваша каманда ўжо знаёміцца з Java і імператыўным праграмаваннем GUI, перавага Vaadin яшчэ большая.
Насупраць, калі вы маеце справу з вялікай колькасцю карыстальнікаў, рэйтынг Google важны, альбо ў вас ёсць надзвычайныя патрабаванні да карыстацкага інтэрфейсу, Vaadin менш падыходзіць. Такім чынам, я б не рэкамендаваў будаваць інтэрнэт-краму з Vaadin.