10 asp.net
TRANSCRIPT
Основи Веб програмування + ASP.NET
Що таке веб програмування
• Це так як десктоп, але веб.• Важливо розуміти різницю між серверною
частиною та клієнтською.
Що таке веб сервер
• IIS• Apache• …
Навіщо веб браузер
Http protocol
Hypertext Transfer Protocol:
Request types:– GET (дані передаються у адресі)– POST (дані передаються у тілі запиту)– …
HTML
<!doctype HTML public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Hello world</title> </head> <body> Hello world! </body> </html>
CSS
Каскадні таблиці стилів – спеціальна мова налаштування зовнішнього вигляду HTML елементів.
p { font-family: Verdana, sans-serif; } h2 { font-size: 110%; color: red; background: white; } .note { color: red; background: yellow; font-weight: bold; } #paragraph1 { margin: 0; }a:hover { text-decoration: none; }
JavaScript
Мова для керування виконанням клієнтських сценаріїв.
IISВеб сервер на якому можна розміщувати ASP.NET веб сайти та інші.
Має вбудовані можливості: - Аутентифікації- Кешування- Стиснення контенту- Перенаправлення запитів- Балансування нагрузок між серверами- WebFarms- Управління пулом аплікацій
Що таке ASP.NETASP.NET – технологія для створення веб сайтів\веб сервісів від компанії Microsoft.
Код може компілюватися при першому зверненні до сайту.
ASP.NET Web Forms
WCF
ASP.NET Web Services (asmx)ASP.NET MVC
BeginRequest ->AuthenticateRequest->
AuthorizeRequest ->… ->
EndRequest
Application lifecycle
Отримується запит до аплікації
Отримується перший запит до аплікації•Створюється ApplicationManager, HostingEnvironment
•Компілюється код з App_Code
Створюються відповідні Http об’єкти•Створюються HttpContext, HttpRequest, HttpResponse
HttpApplication створюється та
присвоюється запиту.
Запит обробляється за допомогою
HttpApplication
http://msdn.microsoft.com/en-us/library/bb470252.aspx
Web Application
Усі static об’єкти є спільними для всіх користувачів.
Ініціалізуються static об‘єкти при старті аплікації на веб сервері. Знищуються – при зупинці роботи.
Всі можливі маніпуляції з веб сайтом у цілому можна здійснювати за допомогою подій, а підписуватися на них можна у файлі Global.asax
Що таке Global.asax
IHttpModule
HttpModule – це обробник HTTP запитів який обробляє всі запити до сайту перед їх безпосереднім виконанням.
IHttpHandler
HttpHandler - це обробник HTTP запитів який обробляє певний тип запитів.
Що таке web.config
Web.config це конфігураційний файл веб аплікації.
Кожний рівень в ІІС має свій конфігураційний файл.
Конфігураційні файли мають ієрархічну структуру, та ті що лежать нижче – перекривають верхні.
Конфігураційний файл містить секції:- ConnectionStrings- AppSettings- Authentication- ...
ASP.NET Page
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblHello" Text="Hello" runat="server" /> </div> </form> </body> </html>
Складається з коду розмітки, та code-behind класу – обробнику.
Файл розмітки містить HTML + asp:<controlName>
ASP.NET PageСкладається з коду розмітки, та code-behind класу – обробнику.
Code-behind клас містить обробник всіх подій сторінки. Написаний на C#
namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } }}
ASP.NET ControlsЕлементи управління дуже подібні до Windows forms:
<asp:Label…<asp:Button….
Кожному asp.net елементу обов’язково вказувати наступні поля:
- ID – назва елементу (аналог Name у WF)- runat=“server” – це означає що це серверний контрол
UpdatePanel
• Дозволяє оновлювати частини сторінки незалежно від решти (AJAX)
• Asynchronous JavaScript and XML• Усуває необхідність перевантаження
(reload) всієї сторінки• Не вимагає знання JavaScript• На формі повинен бути ScriptManager
Що таке MasterPageMasterPage – це «шаблон» сторінки, використовуючи його ми можемо позбутися дублювання код і верстки для різних сторінок.
Що таке PostBack
PostBack – це назва процесу відправлення сторінки для обробки на сервер.
PostBack – є аналогом form submit.
Перевірити чи дана загрузка сторінки є PostBack – мона за допомогою IsPostBack властивості сторінки.
Якщо у вас є наприклад DropDownList і ви хочете щоб після вибору значення автоматично відсилалося на сервер – просто поставте AutoPostBack = true
Не використовуйте private fields на сторінках для зберігання інформації між запитами до
сторінки.
Застереження
Що таке ViewState
ViewState – це KeyValue колекція яка при кожному запиті до сторінки передається між клієнтом та сервером.
Використовується для зберігання проміжних данних.
Дані зберігаються закодовані у hidden полі __VIEWSTATE.
Дуже часто для підвищення продуктивності відключаються це поле.
Що таке Session
Session – це KeyValue колекція яка зберігається на сервері для кожного користувача окремо.
Можемо зберігати інформацію мій викликами сервера.
Більш захищене сховище а ніж ViewState.
Якщо у вас є ймовірність того що сайт буде у так званій WebFarm то Session або не використовують або передають управління сесіями SQL серверу.
Таймаут сесії за замовчуванням 30 хвилин.
ASP.Net Page LifeCyclePreInit – створюються або перестворюються динамічні контроли, встановлюється динамічно мастер пейдж, та тема.
Init – викликається після того як всі контроли створені і мастер пейдж встановлений. Тут ви можете до-ініціалізовувати контроли.
InitComplete – викликається в кінці ініціалізації сторінки. Можна використовувати для внесення змін у ViewState.
Load – тут викликається метод OnLoad сторінки. Тут ви можете змінювати контроли, встановлювати з’єднання з базою данних і т.д.
ControlEvents – оброблення подій викликаних контролами (Click, TextChanged …)
Render – це не подія, це завершальний крок відображення сторінки.
Unload – викликається для всіх контролів і тоді для сторінки. Використовують для очищення.
Робота з HttpContext Клас для роботи з запитом від користувача: HttpContext.Current.Request
HttpContext.Current.Request.QueryString – робота з GET параметрамиHttpContext.Current.Request.InputStream – робота з тілом POST HttpContext.Current.Request.Headers – заголовки запиту
Клас для роботи з відповіддю до користувача: HttpContext.Current.Response
HttpContext.Current.Response.Redirect(url); - перенаправлення сторінкиHttpContext.Current.Response.TransmitFile(fileName); - передача файлу на клієнт
Робота з HttpServerUtilityPage.Server – об’єкт сторінки, для полегшення роботи з даними на сервері.
Server.Transfer(url) – аналогічно до редірект, тільки УРЛ залишається не змінним.
Server.HtmlEncode(string) – кодування HTML стрічки. (позбавлення спец символів для HTML)
Server.HtmlDecode(string) – розкодування HTML стрічки.