Поспішайте на сторону клієнта у веб-розробці


10

За останні кілька місяців я визнав велике хвилювання щодо сценаріїв на стороні клієнта в веб-розробці. Але хоча технології на стороні сервера зрілі, стабільні і добре сприймаються розробниками бекенда, але клієнтські технології незрілі (тобто порівняно з великими серверними рамками) і не подобаються багатьом давно розробленим розробникам. Тим не менш, всі сьогодні займаються розробкою на базі клієнта. Я особисто очікую, що ці великі рамки на сервері зникнуть через 2–5 років, спостерігаючи за поточною тенденцією.

Чому це так? Яким чином новий і «розсіяний» клієнт, що розвивається в HTML5 / JS, може бути кращим для великих та продуманих серверних рішень?


4
Чи є у вас джерела для підтвердження ваших припущень? Javascript майже такий самий старий, як і сам Інтернет, і я не бачу, щоб програмування на стороні сервера відбулося кудись найближчим часом.
tdammers

1
Для уточнення мої припущення обмежуються передній план. Я бачу зрушення на стороні клієнта, в логіці інтерфейсу користувача, рендерінгу тощо. Звичайно серверний бік ніколи не зникне, але зведений до REST-api (або SOAP з цього приводу).
Бруно Шепер

3
Ця зміна приходить і йде. Зазвичай розробка фронту стає все популярнішою, коли впроваджуються нові круті технології (Shockwave, Flash, JavaFX, Flex) або великі нові фреймворки js намагаються "заволодіти світом" (motools, jquery тощо)
Анджей Бобак

1
@VainFellowman: Ви дійсно не хочете використовувати SOAP у сценарії на стороні клієнта. Існує занадто багато накладних витрат, розбір - це біль, і ви не дуже багато виграєте, тому що Javascript зі своєю динамічною дисципліною набору тексту не зможе так сильно використовувати інформацію про тип SOAP.
tdammers

1
@tdammers Я не хочу, насправді не хочу. Я не бачу сенсу використовувати SOAP через HTTP. REST підходить майже для всього.
Бруно Шепер

Відповіді:


7

Це правда:

Поспішайте на сторону клієнта у веб-розробці

Але це не обмежується стороною клієнта, це повний рух стека.

Я знаю, що це може дивувати. Будь ласка, вислухай мене.

Чому це так? Яким чином новий і «розсіяний» клієнт, що розвивається в HTML5 / JS, може бути кращим для великих та продуманих серверних рішень?

Перш за все, обидва добре продумані.

По-друге, тому що це краще.

Хороше питання.

Але "краще" є суб'єктивним, тому відповідь на ваше запитання полягає в тому, що конкретно краще?

Повторно відвідайте питання:

Як "дифузний" клієнт, що розвивається в HTML5 / JS, можливо, перевершує великі рішення на стороні сервера?

Because small is nimble.
And big is clunky.

Це гнучкість.

Це не здається великою справою. Робить це? Гнучкість.

Однак гнучкість лежить в основі всього. Одне покращення гнучкості - покращує все.

Технічне обслуговування. Розширюваність. Масштабованість. Модульність. Корисність. UX.

І це швидше здійснити. Це реальність. Швидше і краще.

This is why Windows 8 made JS a first-class citizen.

HTML5 - JS, не примха і він не піде. Ми бачимо лише насіння технології, яка зростатиме, надаючи обчислювальний вміст та поведінку взаємодії планшетам. Таблетки

Смартфони були найшвидшим прийняттям засобів масової інформації після телебачення в 1950-х роках. Тепер ми не тільки маємо смартфони - у нас є планшети.

Вже в розробці в Mozilla та Windows ОС, яка буде працювати на майбутніх пристроях на своїх ринках -> HTML / JS.

Залишилося багато рішень та нововведень.

Виходить повний стек JS, заснований на гнучкості.

Я сподіваюся, що це допомагає.


1
Чудова відповідь! Але серверні рамки обіцяють ті ж переваги, чи не так?
Бруно Шеппер

1
Так, сер, рамки на стороні сервера обіцяють ті ж переваги, так. Що потрібно знати, це те, що в нових технологіях є додаткові переваги, виявлені несподівано. Він знаходиться на найнижчому рівні (c) в io. Нитки чекають. У JS він має зворотний дзвінок. Це не чекає. Тож відбувається іо оптимізація на найнижчому рівні. Ця реалізація зараз тихо сприйнята корпорацією Майкрософт. Ось чому їх ОС - JS. Кінцева точка, це дає оптимізацію та метаоптимізацію - на всіх рівнях. Тому що мова гнучка. Проста-невидима річ. Невідомо. Сподіваюся, що це допомагає.
Джек Стоун

1
Я вирішив прийняти цю відповідь, бо вона є найбільш повною. Усі інші мають хороші моменти, але це найпереконливіше. Дякую всім!
Бруно Шепер

9

Ця історія завжди мала дві сторони; і на стороні сервера, і на стороні клієнта є свої плюси і мінуси.

Переваги сценаріїв на стороні клієнта включають:

  • Можна зробити більш чуйним, можливі значні зміни без обходу сервера.
  • Код працює на клієнті, зменшуючи використання ресурсів на сервері.
  • Поділ між логікою та поданням стає фізичним.
  • Іноді простіше збалансувати завантаження, особливо якщо використовується автентифікація за запитом.

Але і серверний скрипт має багато переваг:

  • Ви керуєте машиною, на якій працює код.
  • Практично все можливо - якщо ваш сервер може це зробити, то і ваш сценарій.
  • Користувачі не можуть змінювати ваш сценарій перед його запуском.
  • Користувачі не можуть використовувати блокатори скриптів, щоб запобігти запуску вашого сценарію.
  • Користувачі не бачать, що робить ваш сценарій, вони можуть лише спостерігати за результатами.
  • Код надійно працюватиме з кожним клієнтом, який ви можете собі уявити, включаючи зчитувачі екранів, текстові веб-браузери, павуки пошукової системи, скребки, акумулятори, IRC-боти, супердешеві машини, скрипт-блокувані браузери, ви їх називаєте.
  • Користувачі плагінів рідше зламаються.

Для високодинамічних веб-додатків підхід, орієнтований на клієнта, завжди був популярним вибором, тому що це єдиний спосіб забезпечити гідне чуйне робоче середовище, схоже на робочий стіл: без сценаріїв на стороні клієнта кожна операція користувача вимагає кругообігу, відключення, що означає щонайменше на пів секунди затримки, як правило, більше. Але для інформаційного веб-сайту, який є лише частиною статичних сторінок, що подаються з бази даних (скажімо, вікіпедії), перевага є незначною, тоді як переваги сценаріїв на стороні сервера все ще величезні.

Спостережуваний ажіотаж походить від поєднання двох останніх подій:

  1. HTML5 та його корона суміжних технологій. Це зайняло занадто довго, але зараз ми нарешті встановили стандарт, який містить все необхідне для створення тих динамічних веб-додатків, як настільний комп’ютер, без нагромадження хакерів, та основних браузерів, які їх належним чином реалізують.
  2. Доступна потужність обробки. Сьогоднішні настільні ПК настільні настільки ж потужні, як веб-сервер початкового рівня, мобільні телефони клієнтів - це практично настільні комп’ютери 2005 року, а сучасні реабілітації JavaScript досить ефективні, щоб налаштувати баланс продуктивності: на сьогодні клієнтські ресурси дешевші серверних ресурси.

Насправді нічого не змінилося з точки зору того, у чому хороші підходи, орієнтовані на сервер та клієнт; Що змінилося, це те, що орієнтуватись на клієнта зараз легше і дешевше, і це працює краще, ніж кілька років тому, що робить його життєздатним вибором для набагато більше програм, ніж раніше.


жорсткі істини ... +1.
Джек Стоун

8

Сторона сервера завжди буде навколо. Ви не можете сидіти на стороні клієнта на все. Наприклад, ви не хочете використовувати дизайн MVC Backbone.js для свого мікроконтролера, що надсилає вам параметри в режимі реального часу з підвісного крана на виробничому поверсі.

Не вірте шуміху.


Скажи мені. JS у Windows 8, hype? -1. Я погоджуюся з першим пунктом, але ваш другий пункт щодо шуму, потребує уточнення.
Джек Стоун

JS не є ексклюзивним для клієнта і не був деякий час.
Ерік Реппен

@ClintNash ya, насправді. Пані дозволили j-м створити програми win8, щоб збільшити потенційну кількість розробників для своєї платформи. Це відповідь людям, які вирішили вивчити ці технології за допомогою настільних технологій. Але як ревізія, яка вже знає c # / wpf, я не бачу причин створювати програму win8 з html / js.
Енді,

@ErikReppen це правда, але js поодинці не вирізає це на сервері, вам потрібна рамка для створення. Відверто кажучи, бажання використовувати скрипт на сервері мене бентежить. Ми це вже робили, це був класичний ASP, і я не маю бажання повторювати цей досвід.
Енді

@Andy На класичному ASP (зокрема, у веб-формах) ви не знайдете кінця згоди з будь-яким розробником JS, у якого трапилося нещастя з натхненням з тими інструментами, до яких ми точно не хочемо повертатися туди знову. Але це найменш запам’ятовуваний на тегах інструмент сценаріїв на стороні сервера і, мабуть, найбільш жорстоко зневажане рішення тонкого клієнта, що коли-небудь бачив будь-який рівень популярності. Порівнюючи це з чимось на кшталт Python і тепер JS на стороні сервера межує з тим, щоб сказати людям отримати коня.
Erik Reppen

6

Я перейшов у 2009 році з PHP-сервера на сторону сервера до рішення ExtJS на стороні клієнта, пов'язаного з веб-сервісами на стороні сервера.

Причини міграції для мене були:

  1. Краща безпека за рахунок зменшення кількості кінцевих точок та коду на сервері.
    Переходячи до веб-служб, ви підтверджуєте введення даних на кордоні веб-служби та отримуєте більш точний контроль над входом / виходом вашого сервера. Немає шару інтерфейсу на стороні сервера, який би змішував вашу архітектуру безпеки.
  2. Покращена продуктивність через меншу кількість зворотних маршрутів на сервері
    . Архітектура змінюється, тому витяг даних може траплятися рідше, а дані можна кешувати локально, надаючи інтерфейс користувача, не вимагаючи взагалі зворотного переходу. Напрямні - це те, що вбиває ефективність веб-додатків.
  3. Покращена продуктивність через кешованість користувальницького
    інтерфейсу Шар UI можна повністю розмістити на CDN. Я навіть створив веб-програми в автономному режимі, засунувши код інтерфейсу в кеш-код HTML5.
  4. Більш висока надійність інтерфейсу (багате управління на стороні клієнта)
  5. Сторонні розробники можуть використовувати той самий API, який використовує мій власний фронт-енд, і я можу легко використовувати повторно API через модулі, якщо вони мають спільні функції.
    Це означає менший розвиток, якість, документація, ...
  6. Мені подобається програмування в JavaScript краще, ніж PHP, Python або Java

Але, не помиляйтесь, те, що зараз відбувається, є ажіотажем. Це підірветься, і багато веб-додатків знову використовуватимуть архітектуру інтерфейсу на стороні сервера.


Що, галас? -1 Удачі в тому, коли Windows 8 робить JS першокласним громадянином. Так, архітектура інтерфейсу на стороні сервера, можливо, написана в node.js. Нам потрібно це навчитися, оскільки це не блокує.
Джек Стоун

Я не думаю, що незабаром ми повернемося до рішень товстих клієнтів. Але якби я зіткнувся з ExtJS з будь-якої проблеми, яка стала складнішою, ніж збірка попереднього веб-інтерфейсу (тобто всі проблеми незалежно від початкового плану), я міг би зрозуміти, чому альтернатива може здатися менш ідеальною.
Ерік Реппен

6

Ще одним фактором, який викликає захоплення клієнтськими рішеннями, є зростання мобільних додатків. Якщо ви робите веб-сайт, заснований на JavaScript та AJAX на стороні клієнта, а також створюєте вбудовані додатки для iOS та Android, є хороший шанс, що всі троє можуть використовувати одні й ті самі послуги REST, щоб зробити всі свої дані для того, щоб переглядати свої дані. .


Добре сказано ... +1.
Джек Стоун

Дійсно, дуже хороший момент
Бруно Шепер

4

Перш за все, користувач не бачить (а іноді навіть не байдуже) того, що не є сервером. Незалежно від того, наскільки добре написано код на стороні сервера, користувачі не оцінять додаток, якщо клієнтська частина не виконана добре. Іноді навіть приємний інтерфейс важливіший за функціональність.

Великий і потужний хостинг сервера досить дорогий. Набагато дешевше реалізувати певну логіку (крім перевірки) на стороні клієнта. Таким чином, ви можете використовувати менший (отже, дешевший) хостинг сервера, оскільки він не буде завантажений так сильно.

Це причина того, що, незважаючи на нестабільність, клієнтські технології набувають все більшої популярності. Крім того, JS та HTML / CSS підтримуються (майже) усіма сучасними браузерами.

Ці дві частини додатків не можуть існувати окремо. І, здається, Інтернет найближчим часом нікуди не йде.
Я не думаю, що big server-side frameworksце теж може зникнути. Завжди знайдуться компанії, які можуть собі їх дозволити, і використають їхні суттєві переваги.


4

Розробка веб-сторінок на стороні клієнта сильно поєднується з веб-браузерами і з часом змінюється в них. Рішення, яке ви пропонуєте зараз, може не працювати через пару місяців через значні зміни в механізмах візуалізації сторінок веб-браузерів. Деякі браузери не відповідають стандартам і тому вимагають ще більше додаткових зусиль від розробників, щоб досягти очікуваного результату.

Є кілька рішень, які намагаються виправити це питання. Наприклад, якщо ви використовуєте jquery, ви впевнені, що ваш сценарій буде працювати в браузерах, підтримуваних цією бібліотекою jquery. Але лише автори надають вам сумісність із деякими / більшістю / усіма браузерами. Питання в тому, яка команда підтримає вас краще. Це буде команда motools, команда jquery, інша команда? Якщо вони не забезпечують підтримку певного веб-браузера, ваш проект може не працювати в цьому веб-переглядачі.

Хвилювання, яке вам здається, існує вже давно. Я бачив це, коли Shockwave та його наступник Flash були представлені, було «велике повернення» багатих користувальницьких інтерфейсів, коли були відправлені складні js-бібліотеки, спочатку з motools, потім з jquery (я почав використовувати їх у цьому порядку). Були Flex та JavaFX. Але жоден з них не може отримати великої частки на ринку. Деякі вимагають плагінів, які з часом часто піддають кінцевому користувачеві вразливості безпеки, інші можуть не працювати на стороні клієнта через деякі спеціальні налаштування (наприклад, JavaScript відключений у браузері клієнтів).

З іншого боку, рішення на стороні сервера зазвичай пишеться лише один раз. Вам не потрібно турбуватися про те, що все вийде з ладу, і доведеться їх переписувати, як тільки буде завантажено новий Firefox / Chrome / IE / Opera. Вам також не потрібно хвилюватися, що клієнт намагатиметься підробити ваше додаток та / або зіпсувати дані.


1
Це не чиста уява? Можливо, вам доведеться змінити ваш серверний матеріал, коли клієнти змінюються, оскільки ви не зможете в якийсь момент створити HTML / JS / CSS.
Бруно Шепер

1
І ще одне: «Розробка веб-сторінок на стороні клієнта сильно поєднується з веб-браузерами» - Веб-технології є офіційними стандартами, якщо ви дотримуєтесь цього, ви впроваджуєте стандарт, а не зв’язуєте свою програму з браузером. Хоча ще не так давно це було не зовсім правдою, але, здається, це є на даний момент.
Бруно Шепер

Перш за все прочитайте, як деякі веб-переглядачі просто не відповідають стандартам (наприклад, Internet Explorer). З часом речі змінилися, але навіть у IE7 у мене виникли жахливі проблеми через власний спосіб інтерпретації написаного мною. Прочитайте також кілька статей про сумісність між браузерами. Ця проблема не існувала, якби кожен постачальник веб-браузерів дотримувався стандартів. По-друге, якщо набір даних змінюється, вам доведеться змінити свою логіку бізнесу, це очевидно. Але коли новий IE надходить, і вам доведеться переписати близько 30% коду, щоб змусити код працювати в новому браузері - щось не так
Анджей Бобак

Звичайно, я знаю, як боляче і було, щоб все працювало у кожному браузері. Але цю роботу потрібно виконувати незалежно від сервера чи клієнта (як і раніше, зрештою, потрібно використовувати браузер). Я, безумовно, згоден з вашим другим моментом. Однак я не бачу, щоб 30% було переписано. Можливо, потрібні деякі зміни, але я сумніваюся, що це так само погано, як і в старі часи. З іншого боку, ви повинні переробити все на основі рівня обслуговування, якщо ви хочете замінити стек на стороні сервера. Таким чином, Ви ДУЖЕ щільно поєднані з реалізацією на сервері. Можливо, від вершини користувальницького інтерфейсу до моделі.
Бруно Шепер

-1

Абсолютно згоден з вашими настроями. Я також вважаю, що поза тим, що ви говорите, ми побачимо різке падіння REST та масовий підйом веб-сокетів для основного способу, яким ми бачимо, як сайти передають свої повідомлення на свої сервери. Vert.x, Node.js тощо. Вся серверна сторона, а також сторона клієнта переходить до програмування, керованого подіями. Java EE, PHP, Rails і т. Д. Всі вони повинні адаптуватися або вони дуже швидко втратять.


Без пояснень ця відповідь може стати марною у випадку, якщо хтось інший висловлює іншу думку. Наприклад, якщо хтось опублікує претензію на кшталт "ми не будемо спостерігати різкого падіння REST та масового підйому в веб-розетках", як би ця відповідь допомогла читачеві вибрати ці різні думки? Подумайте про те, щоб відредагувати його у кращій формі
гнат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.