Что такое Изоморфный Javascript?
1. Исполняется в различных окружениях
2. Гарантирует одно поведение
3. Справляется с разностью окружений через абстракции
Что такое Изоморфный Javascript?
1. Исполняется в различных окружениях
2. Гарантирует одно поведение
3. Справляется с разностью окружений через абстракции
David Jeremia Luheja's curriculum vitae summarizes his educational and professional background. He holds a Master's degree in Political Science and Public Administration from the University of Dar es Salaam and has worked as a research assistant, tutor, and assistant lecturer. His research experience includes observing elections in Tanzania and writing reports on the voter registration process. Currently, he works as an assistant lecturer at the University of Dodoma, teaching political science courses.
The document discusses the student's evaluation of their media production project. It covers how the project used, developed, or challenged conventions of real music videos. The student researched music video conventions and aimed to both follow conventions like relating the video to the music, while also challenging conventions by creating a video without lyrics for a non-mainstream genre. Feedback from audiences suggested people understood the video concept and enjoyed aspects like the atmosphere and shot types, though some found it confusing without a linear story. The student used new media technologies like online research and surveys during planning, research, and construction stages, and aimed to effectively use conventions and aesthetics across their video and ancillary materials.
This document discusses syringe services programs (SSPs) and addresses common myths about them. It provides data showing that SSPs: 1) provide a variety of services beyond just syringe distribution, including medical care, testing, and referrals; 2) do not increase drug use or undermine safety, and may in fact reduce improperly discarded syringes and increase treatment enrollment; and 3) help reduce health disparities among injection drug users by increasing access to services. The document aims to dispel myths about SSPs and present evidence that they provide significant public health benefits.
This document provides an executive summary of a report on Minnesota's clean energy economy. It finds that clean energy employment in Minnesota is growing faster than overall state employment and these are high-paying jobs. Minnesota's clean energy policies have stimulated growth across sectors like energy efficiency, renewable electricity, and biofuels. As a result, Minnesota has a growing clean energy economy that supports local jobs and attracts investment while reducing the state's reliance on imported fossil fuels.
Flipkart is an Indian e-commerce company founded in 2007 by former Amazon employees Binny Bansal and Sachin Bansal. It began as an online book retailer and has since expanded into various product categories. Flipkart leverages various services and strategies to provide customers with a positive shopping experience, such as cash-on-delivery, easy returns, and its own in-house logistics and customer support teams. It has grown to become one of the largest e-commerce players in India through strategic acquisitions and a complex corporate structure.
Este documento clasifica y describe brevemente cuatro tipos de energías limpias: la energía eólica, obtenida del viento; la energía hidroeléctrica, generada por el movimiento del agua; la energía solar, proveniente de la radiación del sol; y la energía geotérmica, producida por el calor interno de la Tierra.
MJ.SHIVAKUMAR is seeking assignments in pest control and fumigation. He has over 20 years of experience in pest control and fumigation services. He is currently working as a manager of preservation and general pest management at Origo Commodities India Private Limited in Hyderabad. He has extensive experience managing pest control operations and services for both commercial and residential customers.
The document summarizes several factors involved in the pathogenesis and physiology of obesity. It discusses genetic factors like genes involved in metabolism, hormones like ghrelin that influence appetite, and a study finding deletions on a chromosome may indicate genetic obesity. It also outlines the physiological basis, including determinants of energy expenditure, the control system of afferent signals from fat/gut and central regulators of food intake/inhibition. Finally, it briefly mentions types of obesity like childhood vs adult onset and abdominal vs limb fat distribution.
The document outlines a marketing campaign to promote tourism in Pocahontas County, West Virginia by targeting overworked mothers seeking an "unplugged" family vacation where they can disconnect from technology and reconnect with their family. The campaign's key strategy is to position Pocahontas County as the perfect destination for this by leveraging its status within the National Radio Quiet Zone where there is no cell service or WiFi. A variety of tactics are proposed across print, outdoor, radio, digital, non-traditional, and public relations channels to reach mothers and convince them that a vacation in Pocahontas County can help their
The document summarizes the analysis of two music videos that were reviewed to help inform the production of the student's own music video. The Pharrell Williams "Happy" video was chosen because it is also in the dance genre. Key elements noted were bright colors, dancing, and smiling people. The Clean Bandit and Jess Glynne "Real Love" video featured a female artist, and the student wants to portray their artist similarly, showing her enjoying the music and looking nicely dressed with bold hair. These elements may be incorporated into their own music video to suit the genre and artist portrayal.
La investigación se centra en elaborar un champú a base de semillas de guaireña (Moringa oleífera) para nutrir el cabello en San Francisco, Venezuela. Primero se estudian los beneficios de la guaireña y luego se crea y prueba un champú a base de sus semillas. La investigación es explicativa y correlacional con diseño experimental. Se aplican entrevistas para probar la eficacia del champú, arrojando resultados exitosos en un 90% de casos. Finalmente, se concluye que el uso de un champú natural mejora
El estudio encontró que:
1) La mayoría de la población conocía los beneficios de la Guaireña para la salud del cabello y el cuerpo.
2) Algunos expresaron preocupación por los químicos en shampoos artificiales y la mejoría del uso del shampoo de Guaireña.
3) El 90% aprobó el shampoo de Guaireña mientras que el 10% no conocía sus beneficios.
Time Out - A beginners guide to meditation for self careAndrea Fortuin
This document provides an introduction to meditation for beginners. It defines meditation, discusses who should meditate and why. It offers tips on when and where to meditate, and describes various meditation techniques including breathing, mantra, gazing, sound, and mindfulness meditation. The document emphasizes developing a regular meditation practice and notes that it may take time to overcome challenges like a busy "monkey mind." It encourages experimenting to find techniques that work best for the individual.
David Jeremia Luheja's curriculum vitae summarizes his educational and professional background. He holds a Master's degree in Political Science and Public Administration from the University of Dar es Salaam and has worked as a research assistant, tutor, and assistant lecturer. His research experience includes observing elections in Tanzania and writing reports on the voter registration process. Currently, he works as an assistant lecturer at the University of Dodoma, teaching political science courses.
The document discusses the student's evaluation of their media production project. It covers how the project used, developed, or challenged conventions of real music videos. The student researched music video conventions and aimed to both follow conventions like relating the video to the music, while also challenging conventions by creating a video without lyrics for a non-mainstream genre. Feedback from audiences suggested people understood the video concept and enjoyed aspects like the atmosphere and shot types, though some found it confusing without a linear story. The student used new media technologies like online research and surveys during planning, research, and construction stages, and aimed to effectively use conventions and aesthetics across their video and ancillary materials.
This document discusses syringe services programs (SSPs) and addresses common myths about them. It provides data showing that SSPs: 1) provide a variety of services beyond just syringe distribution, including medical care, testing, and referrals; 2) do not increase drug use or undermine safety, and may in fact reduce improperly discarded syringes and increase treatment enrollment; and 3) help reduce health disparities among injection drug users by increasing access to services. The document aims to dispel myths about SSPs and present evidence that they provide significant public health benefits.
This document provides an executive summary of a report on Minnesota's clean energy economy. It finds that clean energy employment in Minnesota is growing faster than overall state employment and these are high-paying jobs. Minnesota's clean energy policies have stimulated growth across sectors like energy efficiency, renewable electricity, and biofuels. As a result, Minnesota has a growing clean energy economy that supports local jobs and attracts investment while reducing the state's reliance on imported fossil fuels.
Flipkart is an Indian e-commerce company founded in 2007 by former Amazon employees Binny Bansal and Sachin Bansal. It began as an online book retailer and has since expanded into various product categories. Flipkart leverages various services and strategies to provide customers with a positive shopping experience, such as cash-on-delivery, easy returns, and its own in-house logistics and customer support teams. It has grown to become one of the largest e-commerce players in India through strategic acquisitions and a complex corporate structure.
Este documento clasifica y describe brevemente cuatro tipos de energías limpias: la energía eólica, obtenida del viento; la energía hidroeléctrica, generada por el movimiento del agua; la energía solar, proveniente de la radiación del sol; y la energía geotérmica, producida por el calor interno de la Tierra.
MJ.SHIVAKUMAR is seeking assignments in pest control and fumigation. He has over 20 years of experience in pest control and fumigation services. He is currently working as a manager of preservation and general pest management at Origo Commodities India Private Limited in Hyderabad. He has extensive experience managing pest control operations and services for both commercial and residential customers.
The document summarizes several factors involved in the pathogenesis and physiology of obesity. It discusses genetic factors like genes involved in metabolism, hormones like ghrelin that influence appetite, and a study finding deletions on a chromosome may indicate genetic obesity. It also outlines the physiological basis, including determinants of energy expenditure, the control system of afferent signals from fat/gut and central regulators of food intake/inhibition. Finally, it briefly mentions types of obesity like childhood vs adult onset and abdominal vs limb fat distribution.
The document outlines a marketing campaign to promote tourism in Pocahontas County, West Virginia by targeting overworked mothers seeking an "unplugged" family vacation where they can disconnect from technology and reconnect with their family. The campaign's key strategy is to position Pocahontas County as the perfect destination for this by leveraging its status within the National Radio Quiet Zone where there is no cell service or WiFi. A variety of tactics are proposed across print, outdoor, radio, digital, non-traditional, and public relations channels to reach mothers and convince them that a vacation in Pocahontas County can help their
The document summarizes the analysis of two music videos that were reviewed to help inform the production of the student's own music video. The Pharrell Williams "Happy" video was chosen because it is also in the dance genre. Key elements noted were bright colors, dancing, and smiling people. The Clean Bandit and Jess Glynne "Real Love" video featured a female artist, and the student wants to portray their artist similarly, showing her enjoying the music and looking nicely dressed with bold hair. These elements may be incorporated into their own music video to suit the genre and artist portrayal.
La investigación se centra en elaborar un champú a base de semillas de guaireña (Moringa oleífera) para nutrir el cabello en San Francisco, Venezuela. Primero se estudian los beneficios de la guaireña y luego se crea y prueba un champú a base de sus semillas. La investigación es explicativa y correlacional con diseño experimental. Se aplican entrevistas para probar la eficacia del champú, arrojando resultados exitosos en un 90% de casos. Finalmente, se concluye que el uso de un champú natural mejora
El estudio encontró que:
1) La mayoría de la población conocía los beneficios de la Guaireña para la salud del cabello y el cuerpo.
2) Algunos expresaron preocupación por los químicos en shampoos artificiales y la mejoría del uso del shampoo de Guaireña.
3) El 90% aprobó el shampoo de Guaireña mientras que el 10% no conocía sus beneficios.
Time Out - A beginners guide to meditation for self careAndrea Fortuin
This document provides an introduction to meditation for beginners. It defines meditation, discusses who should meditate and why. It offers tips on when and where to meditate, and describes various meditation techniques including breathing, mantra, gazing, sound, and mindfulness meditation. The document emphasizes developing a regular meditation practice and notes that it may take time to overcome challenges like a busy "monkey mind." It encourages experimenting to find techniques that work best for the individual.
Видео с доклада: http://getdev.net/Event/asp-net-mvc-4
Доклад об ASP.NET MVC, откуда и зачем он появился, какие задачи решает, какой подход к разработке исповедует. Этот доклад больше пригодится тем, кто хочет углубить и структурировать свои знания об ASP.NET MVC
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
Материалы со встречи: http://getdev.net/Event/xaf-reuse
Задумывались ли вы когда-нибудь, что с переходом от SQL к DataSet, а затем и к ORM типа Entity Framework развитие технологий для доступа и управления данными приостановилось? Что еще нового можно придумать к уже привычному оперированию записями таблиц БД как объектами CRL и при этом поднять удобство разработчика на следующий уровень? На этот и другие вопросы попробует дать ответ доклад о технологии Domain Components (часть DevExpress eXpressApp Framework), которая облегчает создание повторно используемых бизнес моделей за счет легкого комбинирования путем использования интерфейсов вместо классов (это позволяет вам эмулировать "множественное наследование" в C# и VB.NET), а также свободы от особенностей конкретной ORM.
Диаграмма компонентов как модель представления физической структуры разрабатываемой системы. Понятие компонента программной системы и его графическая нотация. Семантика компонента в контексте реализации классов логической модели. Порты, интерфейсы и соединители на диаграмме компонентов. Особенности построения диаграммы компонентов в качестве модели архитектуры разрабатываемой программной системы. Примеры построения диаграмм компонентов.
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Andrey Taritsyn
Возможно, многие из вас уже слышали или читали о модульном расширении для Microsoft ASP.NET Web Optimization Framework — Bundle Transformer. Обычно я рассказываю о данном продукте на примере ASP.NET MVC, но в этот раз я решил поступить по-другому и построил свой доклад на примере использования Bundle Transformer на сайте ASP.NET Web Pages.
Применение behave+webdriver для тестирования Web-проектовPyNSK
Докладчик:
Иван Гребенщиков
Описание:
Современные веб-проекты представляют из себя совсем не набор статических страниц, что повышает сложность их функционального тестирования.
В докладе будет рассмотрена связка инструментов behave+webdriver, способе их применения, возможные проблемы и пути их решения.
1. Темы лекции: ASP.NET. Web Forms. Часть 2.
Практическое задание: ASP.NET. Web Forms.
Тренер: Игорь Шкулипа, к.т.н.
Разработка Веб-приложений на платформе
Microsoft .NET Framework.
Занятие 6
2. http://www.slideshare.net/IgorShkulipa 2
Привязка данных
Привязка данных — это средство, которое позволяет ассоциировать
источник данных с элементом управления с целью автоматического
отображения данных в этом элементе управления. Ключевой
характеристикой привязки данных являет ее декларативный, а не
программный характер. Это значит, что привязка данных
определена вне кода, наряду с элементами управления, на странице
.aspx. Преимущество состоит в том, что такой подход позволяет
достичь более четкого разделения между элементами управления и
логикой кода веб-страницы.
В ASP.NET большинство элементов управления (включая TextBox,
LinkButton, Image и многие другие) поддерживают привязку данных с
одним значением (single-value). Такая привязка позволяет связать
свойство элемента управления с источником данных, но элемент
управления может отображать единственное значение. Привязываемое
свойство не обязательно должно отображать нечто видимое на
странице. Например, можно не только привязать текст гиперссылки,
установив свойство Hyperlink.Text, но также привязать свойство
NavigateUrl для указания целевого назначения ссылки. Для
использования привязки одного значения создаются выражения
привязки данных.
3. http://www.slideshare.net/IgorShkulipa 3
Множественная привязка данных
Многие веб-элементы управления поддерживают привязку с
многократными значениями (repeated-value), это значит, что они
могут отображать наборы элементов. Элементы управления с
многократными значениями включают списки и экранные таблицы
(двумя примерами могут служить ListBox и GridView).
Если элемент управления поддерживает такую привязку, он всегда
предоставляет свойство DataSource, которое принимает объект
данных. (Обычно объекты данных являются некоторого рода
коллекцией, а каждый элемент в коллекции представляет запись
данных.)
4. http://www.slideshare.net/IgorShkulipa 4
Привязка с одним значением
Элементы управления, которые поддерживают привязку данных в режиме
одного значения, позволяют привязать некоторые из их свойств к
выражению привязки данных. Это выражение вводится в части .aspx
разметки страницы и помещается между разделителями <%# и %>.
<%# выражение %>
Чтобы вычислить выражение привязки вроде этого, вы должны вызвать в
своем коде метод Page.DataBind(). При вызове этого метода ASP.NET
проверяет все выражения на странице и заменяет их
соответствующими значениями.
Если вы забудете вызвать метод DataBind(), выражение привязки не
заполнит элемент управления — вместо этого он просто
отбрасывается во время преобразования страницы в HTML-разметку.
5. http://www.slideshare.net/IgorShkulipa 5
Привязка с одним значением
Источник для привязки с одним значением может включать значение
свойства, переменную-член или возвращаемое значение функции (до
тех пор, пока свойство, переменная-член или функция имеют доступ
типа protected, public или internal).
Это также может быть любое другое выражение, которое может быть
вычислено во время выполнения, такое как ссылка на свойство
другого элемента управления или результат вычисления с
использованием литеральных значений и операций с ними и т.д.
<%# GetUserName(ID) %>
<%# 1 + (2 * 20) %>
<%# "John " + "Smith" %>
<%# Request.Browser.Browser %>
6. http://www.slideshare.net/IgorShkulipa 6
Привязка других данных
Можно не только привязать свойство Text элемента управления Label или
TextBox, но также использовать и другие свойства, подобные
ImageUrl элемента управления Image, NavigateUrl элемента
управления HyperLink и даже атрибуту src статического HTML-
дескриптора <img>.
Можно также разместить выражение привязки в любом месте
страницы, не привязывая его ни к какому свойству или атрибуту.
<asp:Image runat="server"
ImageUrl='<%# FilePath %>'
ID="Image1" />
7. http://www.slideshare.net/IgorShkulipa 7
Другие типы выражений
В ASP.NET также имеется поддержка различного типа выражений,
которые в общем называются $-выражениями, поскольку включают
в себя символ $.
Формально $-выражение — это последовательность кода, которую
можно добавить на страницу .aspx и которая будет вычислена
конструктором выражений во время визуализации страницы.
Конструктор выражений обрабатывает выражение и размещает его как
строковое значение в финальной HTML-разметке.
ASP.NET включает встроенный построитель выражений, который дает
возможность извлекать пользовательские параметры настройки
приложения и информацию строки соединения из файла web.config.
Например, для извлечения параметра настройки приложения по имени
appName из раздела <appSettings> файла web.config можно
использовать следующее выражение:
<asp:Literal Runat="server" Text="<%$ AppSettings:appName %>" />
8. http://www.slideshare.net/IgorShkulipa 8
Отличия $-выражений и выражений привязки данных
• Выражения привязки данных начинаются с последовательности символов
<%#, а $-выражения — с <%$.
• В отличие от выражений привязки данных, вызывать метод DataBind()
для вычисления $-выражений не нужно. Они всегда вычисляются при
отображении страницы.
• В отличие от выражений привязки данных, $-выражения не могут быть
помещены в любое место страницы. Вместо этого их следует поместить в
дескриптор элемента управления и использовать результат выражения для
установки какого-то свойства элемента управления.
•Первая часть $-выражения указывает имя построителя выражений. Например,
выражение AppSettings:appName работает, потому что выделенный
построитель выражений AppSettingsExpressionBuilder зарегистрирован для
обработки выражений, которые начинаются с AppSettings. Аналогично,
ASP.NET включает ResourceExpressionBuilder для вставки ресурсов и
ConnectionStringExpressionBuilder — для извлечения информации о соединении
из раздела <connectionStrings> файла web.config.
•Формально $-выражения не включают привязку данных, но работают
аналогично выражениям привязки и имеют похожий синтаксис.
9. http://www.slideshare.net/IgorShkulipa 9
Пользовательские построители выражений
Одним из самых инновационных средств $-выражений является
возможность создания собственных построителей выражений, которые
подключаются к этой платформе.
Например, предположим, что вы хотите создать собственный построитель
выражений, который позволит вставлять случайные числа.
Необходима возможность писать дескрипторы, вроде приведенного
ниже, чтобы отображать случайное число от 1 до 10:
<asp:Label ID="Label1" runat="server" Text="<%$ Random:1,10 %>" />
Все построители выражений должны наследоваться от базового класса
ExpressionBuilder (который находится в пространстве имен
System.Web.Compilation). Самый легкий способ создать простой
построитель выражений состоит предусматривает сначала реализацию
статического метода, выполняющего нужную задачу. В данном случае
статический метод генерирует случайное число:
10. http://www.slideshare.net/IgorShkulipa 10
Пользовательские построители выражений
Все построители выражений должны наследоваться от базового класса
ExpressionBuilder (который находится в пространстве имен
System.Web.Compilation). Самый легкий способ создать простой построитель
выражений состоит предусматривает реализацию статического метода,
выполняющего нужную задачу.
public class RandomExpressionBuilder : ExpressionBuilder
После реализации всех необходимых методов, построитель выражений можно
скопировать в папку App_Code (или компилировать его отдельно и поместить
DLL-файл сборки в папку Bin).
А, чтобы использовать этот построитель выражений в веб-приложении, понадобится
зарегистрировать его в файле web.config и отобразить на подходящий префикс:
<configuration>
<system.web>
<compilation debug="true">
<expressionBuilders>
<add expressionPrefix="Random”
type="RandomExpressionBuilder"/>
</expressionBuilders>
</compilation>
<!-- ... -->
</system.web>
</configuration>
11. http://www.slideshare.net/IgorShkulipa 11
Привязка с многократными значениями
ASP.NET включает несколько базовых списковых элементов управления,
которые поддерживают привязку с многократными значениями:
• Все элементы управления, которые генерируют свой код с
использованием дескриптора <select>, включая HtmlSelect, ListBox и
DropDownList.
• Элементы управления CheckBoxList и RadioButtonList, генерирующие
каждый дочерний элемент в виде отдельного флажка или
переключателя.
• Элемент управления BulletedList, создающий список с метками или
пронумерованными пунктами.
12. http://www.slideshare.net/IgorShkulipa 12
Свойства элементов с многократной привязкой
Свойство Описание
DataSource
Это объект данных, содержащий коллекцию элементов данных для
отображения. Должен реализовывать один из интерфейсов,
поддерживаемых привязкой данных ASP.NET, обычно ICollection
DataSourceID
Установив это свойство, вместо передачи объекта данных в коде можно
связать списковый элемент управления с элементом управления источником
данных. Элемент управления источником данных сгенерирует требуемый
объект данных автоматически. Использовать можно либо свойство
DataSource, либо DataSourceID, но не оба сразу
DataTextField
Каждый источник данных представляет коллекцию элементов данных.
Списковый элемент управления может отображать только одно значение из
каждого элемента списка. DataTextField указывает столбец (в случае строки
таблицы) или свойство (в случае объекта) элемента данных, которое
содержит значение, отображаемое на странице
DataTextFormatString
Это свойство указывает необязательную строку формата, которую будет
использовать элемент управления для форматирования каждого
DataTextField перед его отображением. Например, можно указать, что число
должно быть форматировано в виде денежного значения
DataValueField
Это свойство подобно DataTextField, но значение самого элемента данных
на странице не отображается. Вместо этого оно сохраняется в атрибуте
value лежащего в основе HTML-дескриптора. Это позволяет извлечь
значение позже в коде. Главное назначение этого поля — хранить
уникальный идентификатор или поле первичного ключа с тем, чтобы вы
могли использовать его позднее для извлечения остальных данных, когда
пользователь выберет конкретный элемент
13. http://www.slideshare.net/IgorShkulipa 13
Привязка к SqlDataSource
Элементы управления источниками данных включают любые элементы
управления, реализующие интерфейс IDataSource: SqlDataSource,
ObjectDataSource, XmlDataSource, SiteMapDataSource и
LinqDataSource.
Элемент SqlDataSource позволяет подключаться к любому источнику
данных, который имеет поставщика данных ADO.NET. Сюда относятся
SQL Server, Oracle и OLE DB или ODBC. Используя этот элемент, писать
код доступа к данным не понадобится.
Элемент SqlDataSource может решать две основных задачи:
• извлекать данные из источника и применять к связанным
элементам управления
• обновлять источник данных, когда в связанных элементах
управления выполняется редактирование
14. http://www.slideshare.net/IgorShkulipa 14
Жизнь страницы с SqlDataSource
• Создается объект страницы.
• Начинается жизненный цикл страницы, инициируются события
Page.Init и Page.Load.
• Происходят все остальные события элементов управления.
• Элементы управления источниками данных выполняют любые
обновления. Если обновляется строка, генерируются события Updating
и Updated. Если строка вставляется — то события Inserting и Inserted.
Если строка удаляется — Deleting и Deleted.
• Генерируется событие Page.PreRender.
• Элементы управления источниками данных выполняют необходимые
запросы и вставляют полученные данные в связанные элементы
управления. Здесь генерируются события Selecting и Selected.
• Страница отображается и освобождается.
15. http://www.slideshare.net/IgorShkulipa 15
Привязка к SqlDataSource с одним значением
К сожалению, свойство DataTextField ожидает имя только одного поля.
Однако эту проблему можно решить посредством простого, но
эффективного трюка — использования вычисляемого столбца.
Для этого понадобится просто модифицировать запрос SELECT так, чтобы
он создавал вычисляемый столбец, содержащий информацию из этих
двух полей.
Затем этот столбец можно применять в DataTextField. Необходимая
команда SQL выглядит следующим образом:
SELECT EmployeeID, FirstName + ' ' + LastName AS FullName FROM
Employees
16. http://www.slideshare.net/IgorShkulipa 16
Многофункциональные элементы управления данными
В дополнение к простым списковым элементам управления ASP.NET включает набор
многофункциональных элементов управления данными для поддержки привязки
с многократными значениями. К многофункциональным элементам управления
относятся:
• GridView - табличный элемент управления общего назначения для отображения
больших таблиц информации. Поддерживает выбор, редактирование, сортировку
и перемещение по страницам. GridView — "тяжеловес" среди элементов
управления ASP.NET. Он является потомком DataGrid из ASP.NET 1.x.
• DetailsView - Идеальный выбор для показа одной записи за раз в таблице,
имеющей одну строку на поле. DetailsView поддерживает редактирование и
необязательно возможность перемещения по страницам, что позволяет
просматривать последовательности записей.
• FormView - Как и DetailsView, элемент FormView отображает по одной записи за
раз, поддерживает редактирование и предоставляет элементы управления для
перемещения по последовательности записей. Отличие состоит в том, что
FormView основан на шаблонах, а это позволяет комбинировать поля гораздо
более гибким образом, не обязательно основанным на таблице.
В дополнение к перечисленным здесь элементам управления привязку данных
поддерживают еще некоторые более специализированные элементы управления
ASP.NET. Сюда входят Menu, TreeView и AdRotator.
17. http://www.slideshare.net/IgorShkulipa 17
Кэширование
Кэширование - это технология хранения в памяти копии информации,
которую дорого создавать повторно. Например, можно кэшировать
результаты сложного запроса, так что для повторного его выполнения
вообще не потребуется обращаться к базе данных. Вместо этого
соответствующий объект будет извлечен непосредственно из памяти
сервера, что намного быстрее.
Изящество кэширования в том. что в отличие от многих других приемов
повышения производительности, оно увеличивает как
производительность, так и масштабируемость. Производительность
растет благодаря значительному снижению времени, необходимого на
извлечение информации. Масштабируемость же становится лучше
благодаря тому, что обходятся узкие места — вроде соединений с
базой данных. В результате приложение может обслужить больше
запросов страниц одновременно при меньшем количестве операций с
базой данных.
18. http://www.slideshare.net/IgorShkulipa 18
Кэширование
Среда ASP.NET поддерживает два типа кэширования. Ваши приложения
могут, да и должны, использовать оба типа, т.к. они дополняют друг
друга:
• Кэширование вывода
Это простейший тип кэширования. При этом сохраняется копия
окончательно сгенерированной HTML-страницы, отправленной
клиенту. Следующий клиент, который запросит эту же страницу, на
самом деле не будет ожидать ее построения. Готовая HTML-разметка
будет отправлена ему автоматически. Время, необходимое на
выполнение кода страницы, полностью экономится.
• Кэширование данных
Этим кэшированием можно управлять вручную в коде. Чтобы
использовать кэширование данных, вы сохраняете в кэше важные
части информации, которые требуют значительного времени на
повторную реконструкцию (например, объект DataSet, извлеченный
из базы данных). Другие страницы могут проверить существование
этой информации и пользоваться ею — таким образом, пропуская
шаги, обычно подлежащие выполнению для ее получения.
19. http://www.slideshare.net/IgorShkulipa 19
Кэширование
На основе этих моделей построены также два специализированных типа
кэширования:
• Кэширование фрагментов.
Это специализированный тип кэширования вывода — вместо
кэширования HTML-страниц целиком оно позволяет кэшировать HTML-
разметку по частям. Этот механизм работает за счет сохранения
обработанного HTML-вывода для пользовательских элементов
управления на странице. В следующий раз, когда выполняется данная
страница, генерируются те же события (и потому код страницы будет
работать по-прежнему), но код соответствующих пользовательских
элементов управления уже не выполняется.
• Кэширование источников данных.
Это кэширование, встроенное в элементы управления источниками
данных, в том числе SqlDataSource, ObjectDataSource и XmlDataSource.
Формально кэширование источников данных использует кэширование
данных. Отличие в том, что управлять этим процессом явно не
приходится. Вместо этого нужно просто сконфигурировать
соответствующие свойства, и элемент управления источником данных
будет управлять процессом сохранения и извлечения из кэша.
20. http://www.slideshare.net/IgorShkulipa 20
Кэширование вывода
При кэшировании вывода в памяти сохраняется окончательная
сгенерированная HTML-разметка страницы. Когда та же самая
страница запрашивается вновь, объекты элементов управления не
создаются заново, жизненный цикл страницы не запускается и ничего
из вашего кода не выполняется. Вместо этого пользователю
доставляется кэшированная HTML-разметка. Ясно, что кэширование
вывода теоретически обеспечивает максимальный рост
производительности, поскольку исключаются все накладные расходы,
связанные с выполнением кода.
Страница ASP.NET может использовать другие статические ресурсы (такие
как изображения), которые не обрабатываются ASP.NET. Не
беспокойтесь об их кэшировании. Веб-сервер IIS автоматически
обрабатывает кэширование файлов наиболее эффективным из
возможных способом.
Декларативное кэширование вывода
<%@ OutputCache Duration="20" VaryByParam="None" %>
21. http://www.slideshare.net/IgorShkulipa 21
Кэширование данных
Кэширование данных - наиболее гибкий тип кэширования, однако для своей
реализации он требует выполнения в коде ряда дополнительных шагов.
Базовый принцип кэширования данных состоит в добавлении элементов,
создание которых обходится дорого, в специальный встроенный объект
коллекции (называемый Cache). Этот объект доступен глобально всем
запросам от всех клиентов в приложении.
• Объект Cache является безопасным в отношении потоков
• Элементы из кэша удаляются автоматически
• Элементы кэша поддерживают зависимости
Добавлять элемент в коллекцию Cache можно простым присваиванием
нового имени ключа:
Cache["key"] = item;
Однако такой подход обычно не применяется, потому что он не позволяет
получить контроль над временем нахождения объекта в кэше. Более
предпочтительный подход заключается в применении метода Insert().
22. http://www.slideshare.net/IgorShkulipa 22
Cache.Insert()
Метод Описание
Cache.Insert(key, value)
Вставляет элемент в кэш под указанным ключевым
именем, используя приоритет и время существования
по умолчанию. Это эквивалентно применению
синтаксиса коллекции на основе индекса и
присваиванию нового ключевого имени
Cache.Insert(key, value,
dependencies)
Вставляет элемент в кэш под указанным ключевым
именем, используя приоритет и время существования
по умолчанию. Последний параметр содержит объект
CacheDependency, связанный с другими файлами или
кэшируемыми элементами и позволяющий объявлять
данный элемент недействительным в случае их
изменения
Cache.Insert(key, value,
dependencies, absoluteExpiration,
slidingExpiration)
Вставляет элемент в кэш под указанным ключевым
именем, используя приоритет и указанную политику
устаревания (одну из двух). Эта версия метода Insert()
используется наиболее часто
Cache.Insert(key, value,
dependencies, absoluteExpiration,
slidingExpiration, priority,
onRemoveCallback)
Позволяет конфигурировать все аспекты политики
кэширования элемента, включая время существования,
зависимости и приоритет. Вдобавок можно передать
делегат, указывающий на метод, который должен быть
вызван при удалении элемента из кэша
23. http://www.slideshare.net/IgorShkulipa 23
Приоритеты кэширования. Перечисление CachePriority
Значение Описание
High
Эти элементы имеют минимальную вероятность удалений
из кэша, когда сервер будет освобождать системную
память
AboveNormal Удаление этих элементов менее вероятно, чем имеющих
приоритет Normal
Normal
Эти элементы имеют уровень приоритета по умолчанию.
Они могут быть удалены только после удаления элементов
с приоритетами Low и BelowNormal
BelowNormal Удаление этих элементов более вероятно, чем элементов с
приоритетом Normal
Low Удаление из кэша элементов с этим приоритетом наиболее
вероятно при очистке системной памяти сервером
NotRemovable Элементы с таким приоритетом обычно не удаляются из
кэша при очистке системной памяти сервером
24. http://www.slideshare.net/IgorShkulipa 24
Свойства элементов управления источниками данных,
связанные с кэшированием
Свойство Описание
EnableCaching Если равно true, то кэширование включено.
Значением по умолчанию является false
CacheExpirationPolicy
Использует значения из перечисления
DataSourceCacheExpiry: Absolute - для абсолютного
устаревания (когда указывается фиксированное
время нахождение объекта в кэше) или Sliding - для
скользящего устаревания (когда временное окно
сбрасывается при каждом извлечении объекта из
кэша)
CacheDuration
Время в секундах нахождения объекта в кэше. Если
используется скользящее устаревание, временной
предел сбрасывается каждый раз, когда объект
извлекается из кэша. Значение по умолчанию - 0 (или
Infinite) - позволяет хранить кэшированные элементы
бесконечно
CacheKeyDependency и
SqlCacheDependency
Позволяет установить зависимость одного
кэшированного элемента от другого
(CacheKeyDependency) или от таблицы в базе данных
(SqlCacheDependency).
29. http://www.slideshare.net/IgorShkulipa 29
Пример. Default.aspx.cs
public string TextBoxText { get; set; }
public string LabelText { get; set; }
public List<ListItem> ListBoxItems
{
get {
var result = from c in TableItems
where true
select new ListItem(c.Name, c.ID.ToString());
return result.ToList<ListItem>();
}
set { }
}
public List<ContactClass> TableItems { get; set; }
public int CurrentID { get; set; }
public List<ContactClass> CurrentContact
{
get {
var result = from c in TableItems
where c.ID==CurrentID
select c;
return result.ToList<ContactClass>();
}
set { }
}
private Random random;
public string GetRandom(int from, int to)
{
return random.Next(from, to).ToString();
}
}
30. http://www.slideshare.net/IgorShkulipa 30
Пример. Default.aspx.cs
public partial class _Default : Page
{
protected DataForBinding data;
protected void Page_Load(object sender, EventArgs e)
{
data = new DataForBinding();
if (!IsPostBack)
{
this.DataBind();
}
}
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListItem it in ListBox1.Items)
{
if (it.Selected)
{
data.CurrentID = Convert.ToInt32(it.Value);
DetailsView1.DataSource = data.CurrentContact;
DetailsView1.DataBind();
Label2.DataBind();
}
}
}
}
33. http://www.slideshare.net/IgorShkulipa 33
RandomExpressionBuilder
public class RandomExpressionBuilder : ExpressionBuilder {
public override CodeExpression GetCodeExpression(
BoundPropertyEntry entry,
object parsedData, ExpressionBuilderContext context) {
string[] numbers = entry.Expression.Split(',');
int from = Convert.ToInt32(numbers[0]);
int to = Convert.ToInt32(numbers[1]);
// Получить ссылку на класс, имеющий метод GetRandom().
CodeTypeReferenceExpression typeRef =
new CodeTypeReferenceExpression(this.GetType());
// Определить параметры для GetRandom().
CodeExpression[] methodParameters = new CodeExpression[2];
methodParameters[0] = new CodePrimitiveExpression(from);
methodParameters[1] = new CodePrimitiveExpression(to);
// Вернуть выражение привязки вызвав метод GetRandom()
CodeMethodInvokeExpression methodCall =
new CodeMethodInvokeExpression(
typeRef, "GetRandom", methodParameters);
return methodCall;
}
public static string GetRandom(int from, int to) {
Random random = new Random();
return random.Next(from, to).ToString();
}
}
}