ASP.NET — технологія створення веб-застосунків і веб-сервісів від компанії Майкрософт. Вона є складовою частиною платформи Microsoft.NET і розвитком старішої технології Microsoft ASP. На цей час останньою версією цієї технології є ASP.NET Core 2.0

ASP.NET зовні багато в чому зберігає схожість із старішою технологією ASP, що дозволяє розробникам відносно легко перейти на ASP.NET. У той же час внутрішній устрій ASP.NET істотно відрізняється від ASP, оскільки вона заснована на платформі. NET і, отже, використовує всі нові можливості, що надаються цією платформою.

Зміст

Історія ASP.NETРедагувати

Після випуску сервера Internet Information Services 4.0 в 1997 році, компанія Microsoft почала досліджувати можливість нової моделі веб-застосунків, яка задовольнить скарги на ASP, особливо пов'язані з відділенням оформлення від змісту, і яка дозволить писати «чистий» код. Робота з розробки такої моделі була доручена Марку Андерсу, менеджеру команди IIS, і Скотту Гутрі, що прийшов на роботу в Microsoft в 1997. Андерс і Гутрі розробили початковий проект протягом двох місяців, і Гутрі написав код первісного прототипу під час різдвяних канікул 1997 року.

Початковий проект називався «XSP»; Гутрі пояснив в інтерв'ю 2007 року що, «завжди запитують, що означає буква X. У той час вона нічого не значила. XML починається з неї; XSLT починається з неї. Все кльове починається з X, тому ми його так і назвали.» Прототип XSP був написаний на Java, але скоро було вирішено побудувати нову платформу на основі Common Language Runtime (CLR), бо на платформу Java у компанії Microsoft закінчувалась ліцензія. Гутрі описав це рішення як «величезний ризик», тому що успіх нової розробки був пов'язаний з успіхом CLR, яка, як і XSP, перебувала на ранній стадії розробки.

Характеристики ASP.NETРедагувати

Веб-сторінки ASP.NET, офіційно відомі як веб-форми[1], є основними елементами для розробки додатків в ASP.NET. Є дві основні методології веб-форм — формат веб-додатків та формат веб-сайту[2]. Веб-додатки потрібно скласти перед розгортанням, тоді як структури веб-сайтів дозволяють користувачеві копіювати файли безпосередньо на сервер без попередньої компіляції. Веб-форми містяться в файлах з розширенням «.aspx»; ці файли зазвичай містять статичну (X) HTML розмітку. Розмітка компонентів може включати веб-елементи керування на стороні сервера та елементи керування на стороні користувача, які були визначені на фреймворці веб-сторінки. Наприклад, компонент текстової скриньки (textbox) може бути визначений на сторінці як <asp: textbox id = 'myid' runat = 'server'>, перетворюючись у поле вводу html. Крім того, динамічний код, який працює на сервері, може бути розміщений на сторінці в блоці <% - динамічний код -%>, подібно до інших технологій веб-розробки, таких як PHP, JSP та ASP. З виходом ASP.NET Framework 2.0, Microsoft представила нову модель, що дозволяє використовувати статичний текст на сторінці .aspx, при цьому динамічний код залишається у файлі .aspx.vb, .aspx.cs або .aspx.fs (залежно від того, яка мова програмування використовується).

Code-behind model (код поза моделлю)Редагувати

Корпорація Майкрософт рекомендує використовувати в динамічному коді програми code-behind model, яка розміщує цей код у окремому файлі або в спеціально позначеному тегу. Файли коду, як правило, мають імена типу «MyPage.aspx.cs» або «MyPage.aspx.vb», а файл сторінки — MyPage.aspx (таке ж ім'я, як і у файла сторінки (ASPX), але з розширенням, що визначає сторінку мови). Ця практика використовується у Visual Studio та інших IDE. Також, у форматі веб-додатків, pagename.aspx.cs є частковим класом, який пов'язаний з файлом pagename.designer.cs. Файл дизайнера — це файл, який автоматично створюється з ASPX-сторінки, і дозволяє розробнику посилатись на компоненти сторінки ASPX зі сторінки CS без необхідності їх оголошувати вручну, як це було в попередніх версіях ASP.NET[3]. Використовуючи цей стиль програмування, розробник пише код, що відповідає на різні події, такі як завантаження сторінки або натискання елемента керування, а не лише на процедурний перегляд документа.

Code-behind model ASP.NET відрізняється від класичного ASP, оскільки він заохочує розробників створювати додатки, відокремлюючи презентацію та зміст. Теоретично, це дозволить веб-дизайнерам, наприклад, зосередити більше уваги на розмітці дизайну, звертаючи менше уваги на порушення програмного коду, який його запускає. Це схоже на відокремлення контролера від представлення в рамках model–view–controller (MVC).

ДирективиРедагувати

Директива є спеціальною інструкцією про те, як ASP.NET повинен обробляти сторінку[4]. Найпоширенішою директивою є <% @ Page%>, яка може містити багато атрибутів, що використовуються аналізатором та компілятором сторінки ASP.NET.

<!-- Web.Config CFile -->

<configuration>
    <system.web>
        <customErrors mode="on"/>
    </system.web>
</configuration>

Користувацький елемент керуванняРедагувати

Користувацький елемент керування — це свого роду складний елемент керування, який працює так само, як веб-сторінка ASP.NET. Ви можете додати існуючі елементи керування веб-сервером та розмітку до користувацького елементу керування, а також визначати властивості та методи керування. Дані елементи керування походять від класу System.Web.UI.UserControl. Користувацьким елементам керування властиві такі характеристики:

1) мають розширення .ascx.

2) не можуть містити тегів <html>, <body> або <form>.

3) мають директиву Control замість Page.

Спеціальні елементи керуванняРедагувати

Програмісти також можуть створювати спеціальні елементи керування для додатків ASP.NET. На відміну від користувацьких елементів керування, ці елементи керування не мають файлу розмітки ASCX. Їхні коди компілюються в файл динамічної бібліотеки посилань (DLL). Такі елементи керування можуть використовуватися в кількох веб-додатках та проектах Visual Studio 2013.

Техніка рендерингуРедагувати

.NET використовує технологію рендерингу «відвіданих композитів» («visited composited»). Під час компіляції файл шаблону (.aspx) складається в код ініціалізації, який створює дерево керування (композит), що представляє вихідний шаблон. Літерний текст переходить в екземпляри класу Literal control, а елементи керування сервером в екземпляри специфічного класу керування. Код ініціалізації поєднується з кодом, написаним користувачем (зазвичай шляхом збірки декількох часткових класів), і переходить до специфічного класу сторінки.

Фактичні запити на сторінку обробляються у кілька кроків. По-перше, під час ініціалізації створюється екземпляр класу сторінки та виконується код ініціалізації. Це створює початкове дерево керування, яке маніпулюється методами сторінки в наступних кроках. Оскільки кожен вузол у дереві являє собою елемент керування, представлений як екземпляр класу, код може змінювати структуру дерева, а також маніпулювати властивостями / методами окремих вузлів. Нарешті, під час етапу візуалізації користувач (відвідувач) має відвідати кожен вузол у дереві, вимагаючи, щоб кожен вузол сам використовував методи відвідувача. Вихідний HTML надсилається клієнту.

Після того, як запит було оброблено, екземпляр класу сторінки відкидається, а разом з ним і все дерево керування. Це викликає труднощі у програмістів-початківців ASP.NET, які звертаються до членів екземпляру класу, які відкидаються з кожним циклом запиту / відповіді сторінки.

Принципи ASP.NETРедагувати

Хоча ASP.NET бере свою назву від старої технології Microsoft ASP, вона значно від неї відрізняється. Microsoft повністю перебудувала ASP.NET, ґрунтуючись на Common Language Runtime (CLR), який є основою всіх застосунків Microsoft .NET. Розробники можуть писати код для ASP.NET, використовуючи практично будь-які мови програмування, що входять у комплект .NET Framework (C#, Visual Basic.NET, і JScript.NET). ASP.NET має перевагу у швидкості в порівнянні зі скриптовими технологіями, тому що при першому зверненні код компілюється і поміщається в спеціальний кеш, і згодом тільки виконується, не вимагаючи витрат часу на парсинг, оптимізацію, і т. д.

Переваги ASP.NETРедагувати

  • ASP.NET має перевагу у швидкості в порівнянні з іншими технологіями, заснованими на скриптах (PHP, тощо)
  • Розширюваний набір елементів управління і бібліотек класів дозволяє швидше розробляти застосунки
  • ASP.NET спирається на багатомовні можливості .NET, що дозволяє писати код сторінок на C#, VB, C/C++ та ін.
  • Поділ візуальної частини та бізнес-логіки
  • Розширювана модель обробки запитів

РозширенняРедагувати

Див. такожРедагувати

ПриміткиРедагувати

ЛітератураРедагувати

  • Мэтью Мак-Дональд, Адам Фримен, Марио Шпушта Microsoft ASP.NET 4.0 с примерами на C# 2010 для профессионалов, 4-е издание = Pro ASP.NET 4.0 in C# 2010, Fourth Edition. — М.: «Вильямс», 2011. — С. 1424. — ISBN 978-5-8459-1702-7
  • Даниэль Арсеновски Рефакторинг в C# и ASP.NET для профессионалов = Professional Refactoring in C# & ASP.NET. — М.: «Диалектика», 2009. — С. 528. — ISBN 978-5-8459-1618-1
  • Стивен Сандерсон ASP.NET MVC Framework с примерами на C# для профессионалов = Pro ASP.NET MVC Framework. — М.: «Вильямс», 2010. — С. 560. — ISBN 978-5-8459-1609-9
  • Роб Камерон, Дэйл Михалк ASP.NET 3.5, компоненты AJAX и серверные элементы управления для профессионалов = Pro ASP.NET 3.5 Server Controls with AJAX Components. — М.: «Вильямс», 2009. — С. 608. — ISBN 978-5-8459-1467-5