"ASP.NET Atlas" - AJAX у виконанні
Microsoft h2>
Ігор Тамащук p>
Вступ h2>
Словосполучення "Web 2.0" знайоме зараз,
мабуть, всім, хто більш-менш уважно стежить за розвитком Internet-а.
І всім, напевно, знаком термін AJAX, що використовується в цій концепції. У
своїй статті я розповім про проект Atlas - фреймворку для розробки AJAX
web-додатків, який пропонує компанія Microsoft розробникам на ASP.NET. p>
З чого почати? p>
Звичайно, скачати. Останню версію Atlas
можна завантажити з сайту http://atlas.asp.net/. Виконавши установку пакета VSI, в
Visual Studio 2005 вам буде доступний новий тип проектів - ASP.NET
"Atlas" Web Site. P>
Крім того, на сайті проекту ви можете завантажити набір
лабораторних робіт і гарний приклад програми - "Atlas Wiki". З їхньою допомогою ви
зможете крок за кроком вивчити всі основні можливості цієї бібліотеки. p>
Приклад: автозаповнення і частковий рендеринг форми p>
Можна багато писати про те, що ж таке AJAX,
концептуальної складової Atlas, заглядати в Road Map, порівнювати з
альтернативними продуктами. Але, звичайно
ж, нічого краще не розповість про бібліотеку, ніж показовий приклад. p>
Всі напевно бачили, як працює web-інтерфейс
поштової система GMail. І всі пам'ятають, одну з приємних можливостей, доступних
користувачеві - автозаповнення поля адреси одержувача. У нашій статті ми
спробуємо повторити подвиг розробників з команди GMail, розробивши невелику
пошукову систему, з використанням Atlas. p>
Створення проекту p>
Отже, Atlas встановлений. Відкриваємо Visual Studio 2005,
створюємо новий сайт, як тип сайту вибираємо "ASP.NET 'Atlas' Web
Site ", вибираємо місце розміщення сайту і натискаємо" ОК ". У вас
повинна вийти наступна структура проекту: p>
p>
Сайт Atlas насправді не представляє з себе
нічого складного. Для того щоб підключити Atlas до будь-якого сайту, потрібно
виконати декілька кроків: p>
Додати посилання на збірку Microsoft.Web.Atlas.dll; p>
Додати в проект папки зі скриптами Atlas; p>
настроїти сайт належним чином. p>
Третій крок - самий "ємний" з усіх. Тому
розпишемо його докладніше. p>
Для початку необхідно зареєструвати
конфігураційну секцію для Atlas: p>
xml version = "1.0"?>
p>
p>
p>
p>
p>
sectionGroup>
p>
configSections> p>
... .. p>
p>
І додати саму секцію, відразу після її опису: p>
p>
p>
p>
p>
p>
converters> p>
microsoft.web> p>
p>
Коротко, що таке перетворювачі. Забігаючи наперед, скажу, що Atlas-сайт може
взаємодіяти з серверної логікою за допомогою web-сервісів. Методи сервісів
можуть повертати клієнту дані довільних типів: DataSet, string [],
DataTable і т.д. Але в цьому місці ми отримуємо так званий "архітектурний
розрив ". Якщо в якості клієнта виступає будь-яке інше. NET додаток, то в більшості випадків
типи, які використовуються в декларації сервісів, знаходять свої відображення і на
стороні клієнта. DataSet це DataSet, масив строк - це масив рядків. У
разі ж, коли ми маємо справу з гетерогенними системами, що спілкуються через
web-сервіси, постає проблема пізнавання та перетворення типів. Тобто ми в
нашому випадку повинні відповісти на питання, як наш javascript-клієнт буде
взаємодіяти з web-сервісом, який повертає вибірку даних у вигляді
DataSet? Що таке DataSet для клієнта? P>
Так от, у нашій конфігурації ми і вказали, як Atlas
буде забезпечувати "впізнаваність" таких повертаються типів, як
DataSet, DataTable і DataRow, перетворюючи їх у відомі та зрозумілі для
клієнтського коду структури. p>
Після налаштування конвертерів, додамо в файл web.config наступну секцію: p>
p>
p>
p>
p>
p>
controls>
p>
pages> p>
p>
Тут ми просто-напросто реєструємо глобально
контроли Atlas для використання. p>
Наступна секція грає більш важливу, якщо не найбільш
важливу роль у всій конфігурації Atlas: p>
p>
p>
p>
httpHandlers>
p>
p>
Тут ми підміняємо стандартний HttpHandler для
web-сервісів, на HttpHandler, який поставляється з Atlas. Таким чином, ми
робимо висновок, що використання сторонніх web-сервісів, не пристосованих для
роботи з Atlas-клієнтами - неможливо в принципі. Вся справа в маленькій прийом:
клієнтська інфраструктура Atlas спілкується з web-сервісами не за допомогою
стандартного SOAP, а за допомогою якогось розширеного інтерфейсу і не обов'язково
SOAP. P>
Наступна і остання Конфігураційна секція
додає для внутрішніх потреб серверної частини Atlas спеціальний HttpModule. p>
p>
p>
httpModules>
p>
p>
Отже, перший крок завершено, і ми можемо приступити до
розробці. p>
Додавання web-сервісу. p>
Розробка web-сервісів для atlas-сайту в загальному випадку
не вимагає від розробника ніяких додаткових дій. Тому просто
додамо web-сервіс SearchService.asmx з наступним інтерфейсом: p>
public class
SearchService: System.Web.Services.WebService
p>
( p>
// /
p>
// /
Метод, який буде повертати список слів для автозаповнення p>
// /
summary> p>
[WebMethod] p>
public string [] GetAutoCompleteList (string
PrefixText, int count) p>
( p>
...
p>
) p>
) p>
p>
Цей метод буде повертати список слів для
автозаповнення. Важливо відзначити деяку особливість цього методу, яка,
може бути, пов'язана тільки з тим, що Atlas зараз все ще перебуває в стадії
розробки. Справа в тому, що для нормальної роботи механізму автозаповнення
сигнатура цього методу повинна збігатися не тільки за кількістю, типами і
черговості параметрів, але і за іменами цих параметрів. В іншому випадку
метод буде отримувати null та 0 відповідно як значення при виклику. p>
Реалізація форми: введення рядка для пошуку p>
Тепер переходимо до самої цікавої частини - створенню
працює форми. У нашому новоствореному проекті вже є форма - відкриємо її,
і вивчимо структуру. p>
Перше, що ми бачимо, це наступний контрол: p>
p>
p>
Для того щоб зрозуміти, для чого він потрібний, просто
подивимося на HTML форми, яку отримає Internet Explorer. Там ми знайдемо такий рядок: p>