Microsoft Silverlightпредставляє собою підмножину Windows Presentation Foundation, в якій реалізовано векторна графіка, анімація і засоби відтворення відео.
У версії 1.1 включає в себе повну підтримку .NETCLR, що називається CoreCLR, яка дозволяє писати Silverlight додатки на буль-якій мові, що підтримують платформу .NET.
Silverlight реалізований для ОС WindowsXP, WindowsVista, MacOSX 10.4, та браузерів браузеров InternetExplorer 6.0/7.0, MozillaFirefox 1.5/2.0 і Safari 3.1.
В майбутньому планується підтримка браузера Opera, ОС Windows 2000 та, можливо, інших платформ.
Ця технологія є доволі молодою і містить багато недоліків, основні з яких:
Плагін MicrosoftSilverlight є лише для ОС Windows та Mac OS X, браузери, що офіційно підтримуються — Internet Explorer та Firefox. Існують способи для підключення його до браузера Opera та реалізації для ОС Linux, але вони є неофіційними та нестабільними.
Ігнорування компанією Microsoft відкритих стандартів, таких як SVG.
Як і Flash, Silverlight більше націлений на роботу з графікою та мультимедійними даними, тому не зовсім підходить для заміни JavaScript в Ajax’і.
3.3 Технологія Java Апплети
Розроблений компанією Sun як частина технології Java в 1995 році.
Аплет-це програма, скомпільована в байт-код, що виконується у браузері з використанням віртуальної Java машини. Оскільки байт-код платформо-незалежний, тому апллети можуть виконуватися в браузерах багатьох платформ, де є реалізація віртуальної машини Java.
Мова Java значно запозичила синтаксис із C і C++, але має простішу об'єктну модель і менше низькорівненвих можливостей.
Технологія Java є відкритою — протягом 2006-2008 років компанія SUN опублікувала всі вихідні коди та специфікації Java під вільною ліцензією GNU General Public License, яка надає одержувачам комп’ютерних програм такі права:
свободу запуску програми, з будь-якою метою;
свободу вивчення того, як програма працює, і її модифікації (попередньою умовою для цього є доступ до програмного коду);
свободу розповсюдження копій;
свободу поліпшення програми, і випуску поліпшень в публічний доступ (попередньою умовою для цього є доступ до програмного коду).
Java Апплети виконуються в спеціальному закритому оточенні, що запобігає її від доступу до локальних даних користувача.
Аплет зазвичай розроблюється за допомогою мови програмування Java, хоча для його розробки може використовуватись будь-яка мова, що здатна компілюватися в байт-код. Наприклад: Jython, JRuby та інші.
Переваги аплетів:
Представлення інтерактивних можливостей Web-програм, що недоступні в HTML.
Технологія Java є платформо-незалежною, її реалізація є для більшості ОС та браузерів.
Технологія Java є відкритою — її вихідні коди та специфікації доступні під вільною ліцензією GNU General Public License.
Аплет може працювати майже на будь-якій версії віртуальної машини Java, хоча в деяких випадках він вимагає останню версію.
Аплет кешується, тому при повторному використанні він завантажується швидко.
Аплет працює на порядок швидше, ніж JavaScript і має майже таку саму швидкість, як і мови програмування, що компілюються — наприклад С/C++.
Аплет може перенести більшу частину бізнес-логіки на сторону клієнта. Таким чином зменшується навантаження на сервер і це дає змогу створювати сервіси з великою кількістю користувачів при відносно невеликих серверних потужностях.
Аплети мають недоліки:
Аплет потребує віртуальної машини Java, яка по замовчуванню не присутня в деяких популярних ОС (наприклад Microsoft Windows XP).
Швидкість початку роботи Аплету залежить від швидкості запуску віртуальної машини Java.
Політика деяких компаній забороняє інсталяцію та використання віртуальної машини Java на службових комп’ютерах працівників.
Детальний аналіз цих недоліків та способи їх подолання наведені нижче.
1. Будь-яка розширена Web-технологія (крім базових HTML, CSS і т.п.) потребує підтримки в браузері. Для JavaScript необхідно мати відповідний двигунець, для Adobe Flash — Adobe Flash Player, для MicrosoftSilverlight — платформу .NET, для Java Апплетів — віртуальну машину Java.
Порівняємо статистику [5] підтримки у користувачів вище названих технологій.
JavaScript — ~95%
Adobe Flash — ~90%
MicrosoftSilverlight — ~10%
Java — ~80%
Якбачимо, Java підтримуєтьсяупереважноїбільшостікористувачів, априсучаснихшвидкостяхІнтернетзавантажитиівстановитивіртуальнумашину Java можнабезособливихвитратчасу.
Такожвіртуальнамашина Java входитьвкомплектзпрограмамидеякихрозробників — OpenOffice.org, Oracle таінших.
2. Сучаснікомп’ютеридостатньопотужні, щобкористувачнепомічавзатримокіззапускомвіртуальноїмашини Java.
Комп’ютери 3-5 річної давнини все ще мають цю проблему, але їх кількість постійно зменшується.
Інші технології також створюють значне навантаження на комп’ютер, а JavaScript ще й має відносно низьку швидкодію.
3. З тією ж проблемою користувачі стикаються і при використанні інших Web-технологій. В залежності від політики компаній, забороненими можуть бути також Flash, Silverlight і навіть JavaScript. Тому ця проблема є недоліком не лише Java а й інших популярних web-технологій.
Розділ 3. Розробка альтернативного механізму доступу для Web 2.0
3.4 Класичний механізм взаємодії у Web
Браузер
Сервер
запит
відповідь
HTTP — протокол передачі даних, що використовується в комп'ютерних мережах, належить до протоколів моделі OSI 7-го програмного рівня.
Основним призначенням протоколу HTTP є передача веб-сторінок (текстових файлів з розміткою HTML), хоча за допомогою його можна передавати й інші файли, як пов'язані з веб-сторінками (зображення і додатки), так і не пов’язані з ними (у цьому HTTP конкурує з складнішим FTP).
HTTP припускає, що клієнтська програма — веб-браузер — здатна відображати гіпертекстові веб-сторінки і файли інших типів в зручній для користувача формі. Для правильного відображення HTTP дозволяє клієнтові дізнатися мову і кодування веб-сторінки і/або запитати версію сторінки в потрібних мові/кодуванні, використовуючи позначення із стандарту MIME.
Класичний механізм взаємодії у Web відбувається так: браузер генерує HTTP запит і відправляє його на сервер. Сервер оброблює запит і відправляє відповідь клієнту у вигляді готової HTML сторінки, яку браузер показує користувачу. Для кожного обміну даними між сервером та клієнтом потрібен окремий запит (перезавантаження сторінки).
Є дваосновні види запитів до сервера — GET та POST.
З початку GET був єдиним способом передачі даних від клієнта до сервера. Дані від клієнта до сервера передаються у вигляді параметрів адреси (наприклад — http://www.example.ua/file?p1=v1&p2=v2). Згідно стандарту HTTPзапити типу GET вважаються «безпечними» — багаторазове повторення одного і того ж запиту призводить до одного і того ж результату (при умові, що сам ресурс не змінився за час між запитами). Це дозволяє кешувати відповіді на HTTP запити з типом GET.
За допомогою GET не можна передавати великі об’єми даних та файли (в браузерах, проксі-серверах та web-серверах є ліміти на довжину адреси, наприклад в браузерів MicrosoftInternetExplorer це 1Кб).
Використання GET є небезпечним для відправлення поролів та іншої конфіденційної інформації — вона буде присутня в адресі у відкритому вигляд.
В 1996 з’явилася специфікація HTTP 1.0, що містила новий механізм запиту до сервера — POST. Дані від клієнта до сервера передаються в тілі запиту і, при необхідності, можуть бути зашифрованими. На відміну від запиту з типом GET, запити з типом POSTвважаються «небезпечними» — багатократне повторення одних і тих же запитів з типом POSTможе давати різні результати.
Також за допомогою POST запиту можлива передача файлів від клієнта до сервера.
Існують також інші методи доступів, але вони мають специфічне застосування:
OPTIONS— повертає методи HTTP, які підтримуються сервером.Використовується для визначення можливостей Web-сервера.
HEAD— аналогічний методу GET, єдина різниця — у відповіді сервера відсутнє тіло. Використовується для отримання мета-даних, що задаються в заголовку відповіді, без відправлення всього вмісту.
PUT — завантажує вказаний ресурс на сервер.
DELETE — видаляє вказаний ресурс.
TRACE — повертає отриману відповідь так, що клієнт може побачити, що проміжні сервери додали чи модифікували в запиті.
CONNECT — використовується разом з proxy-сервером, які можуть динамічно переключатися в тунельний режим SSL.
Переваги класичного механізму доступу до Web — підтримка будь-яким HTTP клієнтом (браузером, роботом пошукової системи і т.п.).
Недоліки цього механізму — навіть при незначній зміні сторінки потрібно повністю завантажувати всю сторінку, що негативно впливає як на швидкості та комфорт при роботі з Web-програмою, так і на збільшення трафіку між сервером та клієнтом.
3.5 Взаємодія у Web за допомогою Ajax
В цьому механізмі доступу з’єднуючою ланкою між сервером та сторінкою є JavaScript-об’єкт XMLHttpRequest. В різних двигунцях та їх версіях він реалізований по різному тому потрібно використовувати спеціальну функцію, яка враховує всі можливі варіанти.
HTML
сторінка
Об’єкт
XMLHttpRequest
PHP
скрипт
При певних діях користувача (наприклад при активізації кнопки в складі користувацького інтерфейсу) браузер генерує запит і за допомогою JavaScript-об’єкта XMLHttpRequest відправляє його на сервер. При цьому метод доступу може бути GET або POST. Користувацький інтерфейс під час відправлення запиту і отримання відповіді не блокується і користувач може продовжувати виконувати певні дії, результатом яких можуть бути нові запити до сервера — Ajax підтримує декілька одночасних взаємодій сторінки з сервером. Користувацький інтерфейс виглядає і реагує на дії користувача як звичайна програма, що полегшує роботу з ним.
Сервер оброблює запит і відправляє браузеру відповідь у форматі XML, JSON або подібних. При цьому не відбувається генерації усієї сторінки (як у класичному механізмі доступу), тому час обробки запиту скорочується. Це дозволяє зменшити навантаження на сервер або збільшити кількість клієнтів, що можуть працювати одночасно.