10 asp.net

29
Основи Веб програмування + ASP.NET

Upload: eleksdev

Post on 10-May-2015

1.511 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 10 asp.net

Основи Веб програмування + ASP.NET

Page 2: 10 asp.net

Що таке веб програмування

• Це так як десктоп, але веб.• Важливо розуміти різницю між серверною

частиною та клієнтською.

Page 3: 10 asp.net

Що таке веб сервер

• IIS• Apache• …

Page 4: 10 asp.net

Навіщо веб браузер

Page 5: 10 asp.net

Http protocol

Hypertext Transfer Protocol:

Request types:– GET (дані передаються у адресі)– POST (дані передаються у тілі запиту)– …

Page 6: 10 asp.net

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>

Page 7: 10 asp.net

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; }

Page 8: 10 asp.net

JavaScript

Мова для керування виконанням клієнтських сценаріїв.

Page 9: 10 asp.net

IISВеб сервер на якому можна розміщувати ASP.NET веб сайти та інші.

Має вбудовані можливості: - Аутентифікації- Кешування- Стиснення контенту- Перенаправлення запитів- Балансування нагрузок між серверами- WebFarms- Управління пулом аплікацій

Page 10: 10 asp.net

Що таке ASP.NETASP.NET – технологія для створення веб сайтів\веб сервісів від компанії Microsoft.

Код може компілюватися при першому зверненні до сайту.

ASP.NET Web Forms

WCF

ASP.NET Web Services (asmx)ASP.NET MVC

Page 11: 10 asp.net

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

Page 12: 10 asp.net

Web Application

Усі static об’єкти є спільними для всіх користувачів.

Ініціалізуються static об‘єкти при старті аплікації на веб сервері. Знищуються – при зупинці роботи.

Всі можливі маніпуляції з веб сайтом у цілому можна здійснювати за допомогою подій, а підписуватися на них можна у файлі Global.asax

Page 13: 10 asp.net

Що таке Global.asax

Page 14: 10 asp.net

IHttpModule

HttpModule – це обробник HTTP запитів який обробляє всі запити до сайту перед їх безпосереднім виконанням.

Page 15: 10 asp.net

IHttpHandler

HttpHandler - це обробник HTTP запитів який обробляє певний тип запитів.

Page 16: 10 asp.net

Що таке web.config

Web.config це конфігураційний файл веб аплікації.

Кожний рівень в ІІС має свій конфігураційний файл.

Конфігураційні файли мають ієрархічну структуру, та ті що лежать нижче – перекривають верхні.

Конфігураційний файл містить секції:- ConnectionStrings- AppSettings- Authentication- ...

Page 17: 10 asp.net

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>

Page 18: 10 asp.net

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) { } }}

Page 19: 10 asp.net

ASP.NET ControlsЕлементи управління дуже подібні до Windows forms:

<asp:Label…<asp:Button….

Кожному asp.net елементу обов’язково вказувати наступні поля:

- ID – назва елементу (аналог Name у WF)- runat=“server” – це означає що це серверний контрол

Page 20: 10 asp.net

UpdatePanel

• Дозволяє оновлювати частини сторінки незалежно від решти (AJAX)

• Asynchronous JavaScript and XML• Усуває необхідність перевантаження

(reload) всієї сторінки• Не вимагає знання JavaScript• На формі повинен бути ScriptManager

Page 21: 10 asp.net

Що таке MasterPageMasterPage – це «шаблон» сторінки, використовуючи його ми можемо позбутися дублювання код і верстки для різних сторінок.

Page 22: 10 asp.net

Що таке PostBack

PostBack – це назва процесу відправлення сторінки для обробки на сервер.

PostBack – є аналогом form submit.

Перевірити чи дана загрузка сторінки є PostBack – мона за допомогою IsPostBack властивості сторінки.

Якщо у вас є наприклад DropDownList і ви хочете щоб після вибору значення автоматично відсилалося на сервер – просто поставте AutoPostBack = true

Page 23: 10 asp.net

Не використовуйте private fields на сторінках для зберігання інформації між запитами до

сторінки.

Застереження

Page 24: 10 asp.net

Що таке ViewState

ViewState – це KeyValue колекція яка при кожному запиті до сторінки передається між клієнтом та сервером.

Використовується для зберігання проміжних данних.

Дані зберігаються закодовані у hidden полі __VIEWSTATE.

Дуже часто для підвищення продуктивності відключаються це поле.

Page 25: 10 asp.net

Що таке Session

Session – це KeyValue колекція яка зберігається на сервері для кожного користувача окремо.

Можемо зберігати інформацію мій викликами сервера.

Більш захищене сховище а ніж ViewState.

Якщо у вас є ймовірність того що сайт буде у так званій WebFarm то Session або не використовують або передають управління сесіями SQL серверу.

Таймаут сесії за замовчуванням 30 хвилин.

Page 26: 10 asp.net

ASP.Net Page LifeCyclePreInit – створюються або перестворюються динамічні контроли, встановлюється динамічно мастер пейдж, та тема.

Init – викликається після того як всі контроли створені і мастер пейдж встановлений. Тут ви можете до-ініціалізовувати контроли.

InitComplete – викликається в кінці ініціалізації сторінки. Можна використовувати для внесення змін у ViewState.

Load – тут викликається метод OnLoad сторінки. Тут ви можете змінювати контроли, встановлювати з’єднання з базою данних і т.д.

ControlEvents – оброблення подій викликаних контролами (Click, TextChanged …)

Render – це не подія, це завершальний крок відображення сторінки.

Unload – викликається для всіх контролів і тоді для сторінки. Використовують для очищення.

Page 27: 10 asp.net

Робота з 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); - передача файлу на клієнт

Page 28: 10 asp.net

Робота з HttpServerUtilityPage.Server – об’єкт сторінки, для полегшення роботи з даними на сервері.

Server.Transfer(url) – аналогічно до редірект, тільки УРЛ залишається не змінним.

Server.HtmlEncode(string) – кодування HTML стрічки. (позбавлення спец символів для HTML)

Server.HtmlDecode(string) – розкодування HTML стрічки.

Page 29: 10 asp.net

HTTP sniffers

• Fiddler – дозволяє логувати HTTP трафік