
- •22. Практическое занятие: Применение элементов Семантического Веб в Интернет-магазине
- •22.1. Введение в ускорители
- •22.1.1. Категории
- •22.1.2. Переменные
- •22.2. Описание структуры xml файла ускорителя
- •22.2.1. OpenServiceDescription
- •22.2.8. ActivityAction
- •22.2.9. Preview
- •22.2.10. Execute
- •22.2.11. Parameter
- •22.3. Создание ускорителя для Интернет-магазина
- •22.4. Регистрация ускорителя на странице
- •22.5. Микроформаты, rss
- •22.5.1. Принципы построения микроформатов
- •22.6. Определение WebSlice
- •22.6.1. Пример веб-фрагмента
- •22.6.2. Основные свойства
- •22.6.2.1. Свойство hslice
- •22.6.2.2. Свойство id
- •22.6.2.3. Свойство entry-title
- •22.6.3. Управление обновлениями и уведомление
- •22.6.3.1. Свойство ttl
- •22.6.3.2. Свойство endtime
- •22.7. Создание страницы Новости в Интернет-магазине
- •22.8. Ключевые термины
- •22.9. Краткие итоги
22.6.3. Управление обновлениями и уведомление
Проверяя, нет ли обновлений, Internet Explorer сравнивает веб-фрагмент с его версией в кэше. На платформе Windows RSS новости и веб-фрагменты обновляются периодически: по умолчанию через каждые 24 часа. Однако если веб-фрагмент содержит свойство ttl, то в подсистеме загрузки веб-каналов расписание обновления настраивается с использованием указанного значения. Частоту обновления можно также настроить в диалоговом окне "Свойства веб-фрагмента".
Длительность и частота проверок обновлений регулируются с помощью следующих элементов веб-фрагмента:
свойство ttl;
свойство endtime.
22.6.3.1. Свойство ttl
Срок жизни (TTL) – это количество минут, в течение которых веб-фрагмент считается актуальным. Если пользователь не изменяет интервал обновления, подсистема загрузки веб-каналов рассматривает это значение как рекомендуемую частоту обновления.
<p>Обновление происходит каждые <span class="ttl">60</span> минут.</p>
Минимальный интервал проверки обновлений в браузере Internet Explorer составляет 15 минут.
22.6.3.2. Свойство endtime
Время истечения срока действия веб-фрагмента. Дата и время указываются в атрибуте title, сохраняя внутренний текст элемента для понятного пользователю представления времени, если необходимо.
<abbr class="endtime" title="2008-07-25T17:30:00-07:00">(friendly date format)</abbr>
Для указания строки даты и времени используется следующий общепринятый формат: ГГГГ-ММ-ДДВчч:мм:сс[Z|(+|-)чч:мм].
ГГГГ – 4 цифры, обозначающие год;
ММ – месяц, от 01 до 12;
ДД – день, от 01 до 31;
"В" – разделитель даты и времени;
чч – часы, от 00 до 23;
мм – минуты, от 00 до 59;
сс – секунды, от 00 до 59 (необязательно);
один из следующих вариантов:
"Z" – всемирное координированное время (UTC) или время по Гринвичу (GMT) ("ноль");
("+"|"-")чч:мм – часы и минуты смещения часового пояса.
22.7. Создание страницы Новости в Интернет-магазине
Продемонстрируем возможности web-slice на примере создания страницы новостей. Для этого добавим в masterpage'е новый пункт меню и создадим страницу news/News.aspx.
<asp:Content ID="Content2" ContentPlaceHolderID="column_l_placeholder" Runat="Server">
<asp:Panel ID="PanelNews" runat="server" CssClass="hslice">
</asp:Panel>
</asp:Content>
Все, что есть на странице – это панель в основной области, в качестве CSS-класса которой указан hslice. При рендеренге страницы вместо панели будет подставлен тег div с соответствующим классам. Весь остальной код поместим в бэк-код страницы. В качестве новостей будем отображать модели продуктов магазина, отсортированные по дате модификации. Такой подход применяется в связи с тем, что, как правило, на настоящих сайтах те же новости модераторы сайта вводят на специальных формах и сохраняют их в БД, а уж сам движок сайта формирует на основе БД страницу с новостями.
protected void Page_Load(object sender, EventArgs e)
{
DataClassesDataContext dcdc =
new DataClassesDataContext("Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True");
var query = from productModel in dcdc.ProductModels orderby productModel.ModifiedDate select productModel;
var newquery = query.Take(6);
foreach (ProductModel pm in newquery)
{
LiteralControl lc = new LiteralControl
("<p class ='entry-title'><b>"+
pm.Name+"</b></p>"+"<div class='entry-content'>"+
((pm.ProductModelProductDescriptionCultures.Count>0) ?
pm.ProductModelProductDescriptionCultures[0].ProductDescription.Description : "")+
"</div>");
PanelNews.Controls.Add(lc);
}
}
В нашу панель с новостями мы динамически добавляем LiteralControl'ы, которые при отрисовки страницы просто превращаются указанную в их конструкторе разметку. В данном случае, для каждого из товаров будет отображен заголовок с названием и его описание, если оно есть. При этом параграфам с заголовками задан класс "entry-title", а div'у – "entry-content". Теперь перейдем на страницу новостей и наведем мышкой на текст – он будет обведен рамкой и появится копка добавления web-slice в браузер (рис. 22.4).
Рис. 22.4. Отображение веб-фрагмента Новости на странице Adventure Works в IE8
После добавления, в панели инструментов появится новый раздел (рис. 22.5).
Рис. 22.5. Отображение содержимого веб-фрагмента Adventure Works в панели избранного в IE8
В нем можно увидеть последние новости, обновить их или перейти на страницу с новостями, причем для работы не обязательно находится в данный момент на самом сайте. Частота автоматического обновления – раз в сутки, но ее можно легко изменить. Для этого надо нажать правой кнопкой мыши по панели с web-slice, и выбрать меню "Свойства". В открывшемся окне можно указать необходимую частоту обновления (рис. 22.6).
Рис. 22.6. Свойства веб-фрагмента Adventure Works в IE8
Для программной установки частоты, как уже отмечалось, необходимо где-либо внутри div'а с классом hslice вставить код:
<span class="ttl">15</span>
Класс ttl указывает браузеру, что число, указанное в теге <span> – время обновления, в данном случае – 15 минут.