Будинки Вперед мислення Повернення обчислень клієнт-сервер?

Повернення обчислень клієнт-сервер?

Відео: Dame Tu cosita ñ (Вересень 2024)

Відео: Dame Tu cosita ñ (Вересень 2024)
Anonim

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

Але останнім часом дозрівання HTML5, CSS і, особливо, JavaScript, є провідними розробниками для розміщення реального інтелекту та реальної обробки на самій веб-сторінці. Зокрема, ми спостерігали появу різноманітних фреймворків на базі клієнта на JavaScript, які полегшують створення інтелектуальних лицьових сторін, які повністю працюють у сучасному веб-браузері. Запропоновані веб-переглядачі, як правило, базуються на механізмі Webkit, включаючи Chrome та Safari, але, здається, більшість додатків спрацьовують і в поточних версіях Firefox та Internet Explorer. У вас виходить більш складна веб-сторінка, яка динамічно змінюється, витягуючи дані з сервера за потребою.

Зокрема, найбільше уваги привертають три рамки MVC: Backbone.js, Ember.js та Angular.js. (MVC розшифровується як контролер моделі-перегляду - це, по суті, архітектура, що стоїть за обчисленнями веб-клієнтів. "Js" означає JavaScript.) По суті це все переростання підходу AJAX (асинхронний JavaScript і XML), популярного за останнє десятиліття або так, але стає набагато більш зрілим і майже стандартизованим. Ідея полягає в тому, щоб розмістити більше стану та розвідки у браузері, а потім підключити браузер з REST API на стороні сервера.

Хребна основа - це, мабуть, найосновніший і мінімальний з цих рамок; він використовується в різних місцях на багатьох популярних сайтах. Ембер виріс із структури під назвою Sproutcore, яку підтримувала Apple, і є набагато більш всеосяжною основою, розробленою для того, щоб ви могли робити додатки в настільному стилі. Він часто використовується разом із Bootstrap - набором шаблонів для HTML та CSS, створених спочатку співробітниками Twitter. Angular - це альтернатива Google, яка, здається, знаходиться десь посередині - деякі люди вважають, що вона трохи гнучкіша або принаймні "менш самовпевнена", ніж Ембер, але всебічніша, ніж Backbone. (Зауважте, Google підштовхує розробників до використання Angular для поліпшення якості кодування, але внутрішньо фактично використовує інший, власний набір фреймворків.) Навіть Microsoft додала гачки у Visual Studio для цих рамок.


Оскільки в Інтернеті є кілька десятків альтернатив. Один з найбільш цікавих, про який я чув останнім часом - Meteor, призначений для роботи з JavaScript як на клієнтській, так і на серверній стороні. Але це ще дуже рано, і я ще не знаю жодного реального користувача. Тим часом більше розробників грає з Node.js, часто використовується для реалізації серверних JavaScript.


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


Мабуть, найголовніше, ви можете створювати мобільні додатки, які масштабуються на різних пристроях, не вимагаючи запису конкретних нативних програм. Є ще хороший аргумент для нативних програм, які можуть більш безпосередньо відповідати конкретним особливостям кожної платформи. Однак багато розробників виявили, що такі рамки можуть різко прискорити розробку крос-платформ, особливо якщо вони використовуються у поєднанні з такими речами, як PhoneGap, мобільний фреймворк з відкритим кодом, придбаний Adobe та відкритий проект Apache Cordova.


Мобільний, звичайно, приносить свої обмеження, включаючи швидкість процесорів, і, що ще важливіше, швидкість, а іноді і відсутність підключення. Однією з причин, що люблять додатки на веб-сторінках, є те, що часто ви можете завантажувати основний функціонал через Wi-Fi або швидке з'єднання і просто отримувати потрібні вам дані, а не весь дизайн. Такі пакети, як PhoneGap, вирішують цю проблему, вставляючи JavaScript у завантажену програму.


Однак є й інші проблеми з такими рамками. За визначенням, робити більше обчислень на стороні клієнта збільшує складність порівняно з простим додатком, призначеним лише для сервера, і справді, деякі недоліки старої моделі клієнт-сервер повертаються. Розробникам потрібно керувати станом з обох сторін. Код у двох місцях означає, що вам потрібно зосередитися на безпеці в обох місцях. Оскільки в команді розробників часто працюють люди, які працюють над клієнтом та інші на сервері, ви отримуєте додаткові проблеми з комунікацією. З іншого боку, деякі старі випуски клієнт-сервера не повертаються, і ви натомість зберігаєте переваги програмного забезпечення Web. Це набагато більш орієнтований на стандарти світ, керований громадою, тому ви не настільки залежні від єдиного власницького середовища. Розбиваючи клієнтські та серверні частини, ви також можете мати більш чисту і просту реалізацію на стороні сервера, яка просто виконує обробку, а не інтерфейс користувача, і в результаті може знадобитися менше ресурсів. Тим не менш, ви все ще маєте перевагу в можливості оновити всіх клієнтів відразу, оскільки зазвичай браузер завантажує код із сервера, коли викликається програма.


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

Повернення обчислень клієнт-сервер?