Способы хранения состояния web приложения ASP.NET.



Проблема:

§ HTTP это протокол без сохранения состояния (stateless).

§ После того, как клиент отсоединится от сервера ASP.Net уничтожает объекты, которые были созданы для страницы.

§ Достоинство - гарантируется обработку web приложением тысяч одновременных запросов без ошибок на нехватку недостатку оперативной памяти.

§ Недостаток - код приложения должен использовать специальные методы сохранения информации между web запросами и ее восстановления при необходимости.

§ ASP.Net поддерживает различные способы управления состоянием. Выбор правильного способа зависит от:

• Какие данные требуется хранить;

• Длительности времени хранения;

• Масштаб использования данных (только одним пользователем или разными пользователями).

• Разные способы хранения состояния являются взаимодополняющими, т.е. можно использовать их комбинацию в одном web приложении.

Состояние Web-приложения

§ В Web-приложении есть данные, которые описывают состояние сеанса работы пользователя с приложением:

• Данные, которые хранятся между множеством вызовов (обработка событий) одной и той же страницы;

• Данные, которые должны передаваться между страницами, которые вызывает пользователь в ходе сеанса работы

§ Данные приложения используются для разных целей:

• Для обеспечения персонализации пользователя

• Хранения информации о пользователе

• Для формирования отчета об использовании страниц

§ Множество значений данных приложения задает состояние приложения, которое должно сохраняться в ходе сеанса работы пользователя.

 

Преимущества разных способов хранения состояния:

§ Преимущества хранения данных на стороне клиента

• Лучшая масштабируемость – на web-сервере не используется память. При большом количестве пользователей могут возникать проблемы с памятью на сервере.

• Поддержка множества web-серверов – можно распределять входящие запросы между множеством одновременно работающих серверов (web-ферма).

§ Преимущества хранения данных на стороне сервера

• Более высокий уровень секретности

• Уменьшение количества передаваемых данных

 

Способы хранения состояния web-приложений

1. ViewState – хранение и передача данных в скрытом поле страницы

2. QueryString – хранение и передача данных в строке запроса

3. CustomCookies – хранение и передача данных в куки элементах.

4. SessionState – хранение данных в состоянии сессии.

5. ApplicationState – хранение данных в состоянии приложения.

6. Профили (Profiles) – хранение данных в описании профиля пользователя.

7. Кэш (Caching) – хранение данных в кэше.

 


 

Связывание элементов управления Web Form с источниками данных. Способы связывания. Примеры.

Data Binding это функциональность, позволяющая связать источники данных с ЭУ. В результате ЭУ будут отображать требуемые данные.

Это декларативный процесс, а не результат программирования.

Когда свойству DataSource задается ссылка на data object, то создается логическая связь между ЭУ и data object, который содержит данные для передачи.

Для выполнения самого процесса передачи данных нужен метод ЭУ DataBinding(), который пробегает по источнику данных, извлекает данные и передает их странице.

Связывание с данными (Databinding):

• Предоставляет единый, простой, но мощный способ заполнения WebForm данными

– Позволяет ясное отделение кода от интерфейса пользователя (UI)

• Поддерживает связывание с любым источником данных

– Свойства, выражения, вызовы методов

– Коллекции (Array, Hashtable, etc.)

– DataSet, DataTable, DataView, DataReader

– XML

 

Связывание с данными:

• Можно указать выражение связывания

• При вызове метода ЭУ DataBind, выражение вычисляется и полученное значение заносится в ЭУ:

– DataBind для одного ЭУ (и его дочерних ЭУ)

– Page.DataBind для связывания всех ЭУ на странице

• Работает со скалярными ЭУ, например ЭУ, Label

• Работает со списками, например: DropDown, ListBox, и т.п.

• Позволяет использовать шаблоны.

 

Способы связывания:

§ Два способа связывания

• Связывание с одним значением, скалярное связывание (single-valuebinding)

# выражения

$ выражения

• Связывание с множеством значений, со списками данных (repeated-valuebinding)

Связывание с одним значением (Single-Value Binding):

ЭУ, которые поддерживают single-value binding, позволяют связать некоторые их свойства с databinding выражениями.

Эти выражения записываются в размеченную часть страницы .aspx (не в программном коде).

§ Выражения записываются в формате

    <%# выражение_находится_здесь %>

§ Например, если есть переменная класса EmployeeName (public, private, protected), то можно записать

    <%# EmployeeName %>

Правильные выражения для Single-Value Binding:

Содержанием выражений связывания могут быть только:

• значения свойств, полей класса и результаты работы методов;

• результат арифметического или символьного выражения

• И т.п.

Например

<%# GetUserName() %>

<%# 1 + (2 * 20) %>

<%# "John " + "Smith" %>

<%# Request.Browser.Browser %>

Пример:

<form id="form1" runat="server">

<asp:Image runat="server" ImageUrl='<%# FilePath %>' ID="Image1" />

<br />

<asp:Label runat="server" Text='<%# FilePath %>' ID="Label1" />

<br />

<asp:TextBox runat="server" Text='<%# GetFilePath() %>' ID="Textbox1" />

<br />

<asp:HyperLink runat="server" NavigateUrl='<%# LogoPath.Value %>'

           Font-Bold="True" Text="Показатьизображение" ID="Hyperlink1" />

<br />

<input type="hidden" runat="server" id="LogoPath" value="myimg.jpg" name="LogoPath" />

<b><%# FilePath %></b>

<br />

<img src="<%# GetFilePath() %>" alt="<%# GetFilePath() %>" />

</form>

 

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

   // Построить выражения привязки

this.DataBind();

}

protected string GetFilePath()

{

return "myimg.jpg";

}

protected string FilePath

{

get { return "myimg.jpg"; }

}

}

 

$ выражениясвязывания:

§ Имеют вид <%$ … %>

§ Выражения, записанные в <%$ … %> вычисляются, когда формируется ответ на запрос (рендеринг) с помощью “expression builder”.Такие выражения заменяются на строки.

§ Используются для получения заданных администратором значений из web.config файла

Например, если нужно получить значение, названное appName из раздела <appSettings> файла web.config, то нужно записать:

       <asp:Literal Runat="server"

Text="<%$ AppSettings:appName %>" />

 

§ Пример: "<%$ AppSettings:appName %>"

§ Первая часть выражения (до :) это имя построителя выражения, которые должны быть зарегистрированы

• AppSettingsExpressionBuilder

• ResourceExpressionBuilder

• ConnectionStringsExpressionBuilder

§ Например:

<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Northwind %>" ... />

 

Различие между # и $ связыванием:

§ Для $ выражений не нужно вызывать метод DataBind(), чтобы выполнить выражение. Оно всегда выполняется при рендеринге страницы.

§ В отличии от # выражений, $ выражения не могут вставляться в любое место страницы. Они могут быть записаны только в тэгах эл. управления для задания его свойств.

§ Если нужно показать значение $ выражения в виде обычного текста, то его нужно поместить в ЭУ Literal:

    <asp:Literal Runat="server"

Text="<%$ AppSettings:appName %>" />

 


Дата добавления: 2018-05-02; просмотров: 773; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!