Які переваги архітектура клієнт / сервер у веб-додатках, на відміну від програмного забезпечення фронтенда, створеного сервером


13

У нашій компанії нам потрібно побудувати веб-інтерфейс на вбудованій платформі Linux. Я начебто бачу 2 варіанти: Ви використовуєте технологію, коли HTML і JavaScript генеруються на стороні сервера (Think JSP, Grails, але це те, що використовує C ++ і генерує HTML / JavaScript) або ви створюєте HTML5 "клієнт" додаток, яке спілкується з резервним файлом, що генерує JSON або XML.

У мене таке відчуття, що веб-додатки в даний час мають тенденцію йти з останніми, але які переваги цього роблять (Розробники проекту вибирають перше, в основному виходячи з того, що вони знають C ++ набагато краще, ніж HTML та Javascript)


Якщо розробники більше знайомі з C ++, ніж з HTML + JS, чому вони пішли з колишнім рішенням? Останні дають їм менше клопоту, особливо якщо вони замінять "HTML 5-клієнт" таким багатим клієнтом, як настільний додаток C ++, або Java-аплет або розгорнутий настільний додаток JNLP ...?
Дракон Шиван

Відповіді:


4

AJAX

Я думаю, що ваше запитання зводиться до "Чи повинен мій веб-додаток генерувати HTML на стороні клієнта чи на сервері?" Клієнтська генерація спілкується з сервером за допомогою AJAX, хоча X (XML), як правило, замінено JSON, але більшість людей все ще називають його AJAX, оскільки це звучить краще. На стороні сервера, сервер просто робить HTML на сервері.

Я маю великий досвід роботи з XML і майже жодного з JSON. Все, що я знаю про XML, змушує мене запропонувати використовувати JSON, якщо це можливо.

Плюси AJAX:

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

Мінуси AJAX:

  • Налагодження JavaScript
  • Складність?
  • Речі, які ви можете робити з JavaScript, часто неможливо використовувати незрячим або інвалідам.
  • Може знадобитися більше загального коду (більший загальний обсяг пам’яті на вбудованому пристрої)

Клієнт / сервер

Усі веб-додатки використовують архітектуру клієнт-сервер. Протокол HTTP змушує веб-додатки вести себе таким чином. AJAX використовує обхід для обмеження дизайну, але основна модель HTTP все ще залишається клієнт-сервером. Я б не зациклювався на всій справі про найкращий спосіб застосувати MVC до веб-додатків. Якщо вам доведеться робити MVC з політичних причин, подивіться, як це робить Ruby / Rails. Насправді, Rails - це чудова архітектура для копіювання (або використання).

Сервіс проти додатка.

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

C / Web

Ого. Я працював у C і Assembly 3 роки, перш ніж перейти до веб-розробки. Я не можу придумати гіршу мову для написання веб-програми - особливо з точки зору безпеки. Перевірка вводу та вихід виходу настільки критичні ... SANS випускає список найпоширеніших помилок щороку. Переповнення буфера, ін'єкції, проблеми між веб-сайтами (неправильне кодування виводу) ... Усі ці помилки дійсно легко зробити в C або збірці. Принаймні така мова, як Java, має String, який не захищений від переповнення, та механізм обробки винятків, який, як правило, запобігає поодинці помилок від доступу шкідливого коду до системної пам'яті. Не кажучи вже про обробку міжнародних наборів символів (використовуйте UTF-8, коли це можливо).

Якщо вам потрібно використовувати C з міркувань пам'яті або вбудованого програмного забезпечення, то це вам потрібно зробити. Тільки будьте обережні!

Підтримка браузера

Першим кроком до створення веб-програми є виявлення, які браузери будуть використовуватися вашими клієнтами? W3Schools і Wikipedia - хороші джерела загальної статистики, але YMMV.

Там, де я зараз працюю, ми підтверджуємо, що наша програма створює лише дійсний XHTML 1.0 перехідний HTML. Ми також використовуємо специфічний Doctype та форматування, необхідні для уникнення режиму Quirks в IE, що полегшує запис HTML-браузера (див. Поради в моєму блозі ). Ми тестуємо на останніх 3 версіях IE, плюс Firefox та Chrome для Windows та Linux (Safari використовує той же механізм візуалізації, що і Chrome). Завдяки цій валідації та тестуванню наш додаток працює майже скрізь (Windows, Mac, Linux, iPhone, Android тощо), крім BlackBerry.

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

Підсумок

Всі веб-сайти побудовані на HTML та HTTP. Майте під рукою хороші рекомендації щодо цих технологій, коли ви подаєте заявку. У ході оформлення програми, навіть за допомогою інструментарію, ви зіткнетеся з проблемами, які потребують базового розуміння цих технологій для їх вирішення.

Напевно, вам також потрібно зручно використовувати CSS та стиснення зображення, щоб зробити щось привабливим та швидко реагувати. JavaScript, веб-сервери та браузери - додаткові сфери знань, які вам в кінцевому підсумку знадобляться.

Якщо ви будуєте свій HTML на стороні сервера, база вашого коду, ймовірно, буде меншою, і вам, можливо, не потрібно буде вивчати JavaScript. Модель на стороні сервера означає, що ваші програмісти будуть писати (C?) Код, який генерує HTML, який вони можуть переглядати безпосередньо перед тим, як він буде надісланий клієнту. Модель AJAX означає, що ваші програмісти будуть писати JavaScript, який генерує HTML. Мені не відомо про багато інструментів для перевірки або навіть перегляду HTML-коду, сформованого JavaScript в браузері, що ускладнює правильне програмування.

Там, де я зараз працюю, ми використовуємо гібридний підхід, який час від часу включає код Java, що генерує JavaScript, що генерує HTML. Якщо ви, хлопці, не в курсі веб-розробки, це не місце для початку. Я думаю, я б сказав, що якщо у вас немає вагомих причин використовувати модель AJAX, я б почав зі старої моделі сервера-HTML-покоління та дивлюсь, наскільки це до вас доходить.


"Мені не відомо про багато інструментів для перевірки чи навіть перегляду HTML-коду, сформованого JavaScript в браузері" Саме для цього FireBug (або будь-яке інше розширення веб-розробника веб-розробника, наприклад інструменти для веб-розробників Chrome).
sleske

13

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

Ваш клієнт HTML - це лише один із багатьох можливих споживачів цих даних. Розгляньте додаток iOS, додаток Andriod, додаток Windows 8, API та інше - як інших споживачів.


Крім того, хоча це може бути двосхилий меч (більше речей залежить від API, що ускладнює оновлення), він також допомагає уніфікувати код сторони сервера, замість того, щоб підтримувати набір API "web" та " "контролери та погляди. Відокремлення питань, що стосуються ПДВ.
Шауна

6

Зростаючий поширений спосіб веб-програми - це поєднання обох, що мають тенденцію до тієї чи іншої сторони.

Перший підхід є більш традиційним, був там в протягом багатьох років , і його добре документований, (хоча з ++ це взагалі не мова популярним для цього).

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

Загалом, це залежить від інших обмежень, таких як ознайомлення з командою та діловий випадок.

Деякі питання, які допоможуть вам оцінити свої варіанти:

  1. Чи має команда досвід мови та платформи?
  2. Чи готовий колектив вивчати новий підхід та технології?
  3. Чи використовує додаток переваги, щоб їх було легше програмувати для інших пристроїв (iPhone, Android, Windows 8 тощо)
  4. Чи буде інший, внутрішній чи зовнішній додаток інтегрований із послугами чи даними, доступними до програми?

5

Для таких "інтранетних" програм я використовую підхід fat-client (JavaScript / HTML5-додаток + JSON) з ExtJS4.

Для звичайних "Інтернет" веб-сайтів я використовував би більш "класичний" підхід.

Клієнти повинні все-таки рендерувати сайт, то чому б не зарядити їх усім процесом і просто дати їм дані для заповнення. Це просто спрощує код сервера для генерування відповідей (просто JSON або XML), що економить продуктивність. Крім того, оскільки клієнтів завжди більше, ніж серверів, вся система набагато краще, якщо більша частина роботи виконується клієнтами.

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

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

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