Створення веб-додатків на стороні сервера проти клієнта проти гібриду? [зачинено]


27

В даний час існує безліч підходів для створення веб-додатків:

1. Тільки на стороні сервера

Це класичний підхід, коли ви відтворюєте сторінки на сервері за допомогою такої веб-рамки, як Ruby on Rails, Django, Express, Play! Рамка та ін.

Типовий робочий процес : побудуйте всю свою логіку бізнесу, моделі та перегляньте шаблони на сервері в рамках вашого вибору.

2. Клієнт + API REST

Відносно не так давно веб-спільнота в цілому почала створювати клієнтські програми в Angular, Backbone, Ember та декількох десятках інших програм MV * JavaScript MV *. А тепер у нас також є учасник React.js.

ОНОВЛЕННЯ : Нерозуміння немає. Що я мав на увазі лише на стороні клієнта - це повне розділення проблем. У вас є сервер API REST і додаток на стороні клієнта, який спілкується з цим сервером. Залежно від випадку використання, швидше за все, ви ніколи не матимете справжнього лише клієнтського додатку, який не підключатиметься до бек-енду ні для автентифікації, ні для збереження даних.

Типовий робочий процес : витрачайте години, визначаючи Кутовий проти Хребта проти Ембер проти Х. Потім ви будуєте свої маршрути, моделі, види, контролери на клієнті. Після того, як ви закінчите, тепер будуйте моделі, контролери, маршрути на сервері. У такий спосіб ви виконуєте подвійну кількість роботи.

3. Гібрид

Я мало знаю про використання цього підходу, але якби я здогадувався, ви викладаєте свої погляди (Перегляд рамки MVC) на сервері. У результаті ви отримуєте підтримку SEO плюс швидше завантаження сторінки.

На гібридному фронті є rendr airbnb, який нібито поєднує магістраль і експрес разом.

Ерік Флоренцо сьогодні опублікував у своєму блозі: Реагуйте: Нарешті, чудовий стек-сервер / клієнт .

Кількість способів створення веб-додатків просто величезна. А для того, хто навчається розробці веб-сторінок, це може стати проблемою. Як вирішити, який підхід використовувати для побудови наступного додатку?


1
"Тільки на стороні клієнта: ... Після того, як ви закінчите, тепер будуйте моделі, контролери та маршрути на сервері." Це не розбирає.
user16764

@ user16764 оновило моє запитання.
Оцінено R

Відповіді:


13

Я думаю, ви повністю зрозуміли "лише сторону клієнта".

По-перше, він повинен мати позначку "Клієнт-орієнтований". Вся суть каркасів, таких як Angular, полягає в тому, що частини "VC" MVC повністю реалізовані в браузері в JavaScript. Логіка "M" вищого рівня частини "M" - Модель - реалізована в браузері, а логіка "CRUD" нижчого рівня реалізована на сервері.

Логіка бізнесу розробляється один раз. Логіка перегляду розробляється один раз. Логіка управління розробляється один раз - і все це в рамках вибору Javascript. Логіка доступу до даних також розробляється лише один раз, але на цей раз у будь-якій системі RESTy або SOAPy, яку ви обираєте на стороні сервера.

У крайньому випадку ви можете повністю реалізувати Модель у клієнті, якщо це прийнятно для доступу до даних лише з одного браузера на одній машині, і, якщо дані будуть переміщені кожного разу при виборі параметра «Очистити файли cookie».


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

@Andy це якраз моя думка. Коли я створив додаток Ember, основну перевірку форми потрібно було зробити на клієнті, але це також потрібно було зробити на сервері. Один раз я потрапив у серйозну проблему за те, що не перевірив свої дані на сервері та повністю довірився клієнту.
Оцінено R

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

3
@JamesAnderson Google Docs сильно відрізняється від, наприклад, інтернет-магазину. Ви редагуєте свій власний документ - це лише сукупність даних, які вони зберігають, не піклуючись про те, що означають дані. Але ви дійсно вважаєте, що перевірка замовлення повинна проводитися ТІЛЬКИ на клієнті? Ви просто просите, щоб люди дали собі безкоштовні продукти, якщо саме так ви будуєте такий додаток. Схоже, ви також припускаєте, що Google насправді не робить перевірку даних на сервері. Насправді не існує жодного способу, щоб ми могли знати, що відбувається.
Енді,

9

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

Мені пощастило взяти участь у розмові кілька років тому, де я почув щось, що справді застрягло в мені: "Ви вибираєте дизайн, щоб відповідати вимогам, а не вимогам, щоб відповідати дизайну". Тож стикаючись із таким питанням, вам потрібно дізнатися, що насправді потрібно людям, які просять вас створити це програмне забезпечення.

Ваше завдання - пояснити плюси та мінуси кожного підходу.


1
Спасибі. Те, що ви говорите, має сенс. Я сподівався, що існує "срібна куля", один справжній спосіб робити речі. Я розпочав роботу з веб-рамкою Python під назвою Django в 2011 році. Незабаром після цього відбувся великий поштовх до MV * -світ * *, таких як Backbone, Angular, Ember. І раптом спосіб Rails і Django створити веб-додатки застарів. Але сьогодні, здається, ми робимо крок назад і знову змішуємо клієнтську сторону із стороною сервера, щоб досягти кращої продуктивності.
Оцінений R

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

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

5

Я думаю, що одним із ключових моментів нових підходів та рамок є те, що між технологіями переднього та задніх технологій є менше зв’язків.

Ідея полягає в тому, що ви можете використовувати будь-яку структуру для клієнта і витягувати дані та / або перегляди з будь-якої кількості джерел незалежно від структури сервера.

Це дозволяє нам вибрати найкращі інструменти для виконання роботи, і наш вибір може розвиватися незалежно.

Справді, я не використовував кутових або опорних, тому не можу дати жодних досвідчених рекомендацій. Мій поточний базовий стек складається з найтоншого mvc на стороні сервера або спокійних сервісів, які я можу знайти. Переважно надають шаблони та дані. Дані надаються та / або подані клієнтською стороною дані, використовуючи здебільшого просто звичайний javascript, jquery та css.

Я починаю тут і будую на ньому те, що мені потрібно. Переваги такого підходу очевидні, коли ви думаєте про підтримку декількох клієнтських платформ - браузера, мобільних і т.д.

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