-
Светлин Наков, Графичен потребителски интерфейс с Windows Forms – http://www.nakov.com/dotnet/lectures/Lecture-14-Windows-Forms-v1.0.ppt
-
MSDN Library - http://msdn.microsoft.com
-
Microsoft Windows Forms QuickStarts Tutorial –
http://www.csharpfriends.com/quickstart/winforms/doc/default.aspx
-
Marj Rempel, Kenneth S. Lind, Marjorie Rempel, MCAD/MCSD Visual C# .NET Certification All-in-One Exam Guide, McGraw-Hill, 2002, ISBN 0072224436
-
MSDN Library, Event Handling in Windows Forms – http://msdn.
microsoft.com/library/en-us/vbcon/html/vbconeventhandling.asp
-
Threading in Windows Forms –
http://www.yoda.arachsys.com/csharp/threads/winforms.shtml
-
J. Fosler, Windows Forms Painting: Best Practices –
http://www.martnet.com/~jfosler/articles/WindowsFormsPainting.htm
Глава 16. Изграждане на уеб приложения с ASP.NET Автори
Михаил Стойнов
Рослан Борисов
Стефан Добрев
Деян Варчев
Иван Митев
Христо Дешев
Необходими знания -
Базови познания за езика C#
-
Базови познания за архитектурата на .NET Framework
-
Базови познания по Интернет технологии
-
HTTP (Hyper Text Transfer Protocol)
-
HTML (Hyper Text Markup Language)
-
Познания за архитектурата на уеб базираните приложения
Съдържание -
Въведение
-
Уеб форми
-
Контроли
-
Изпълним код на уеб форми и контроли (code-behind)
-
Събития
-
Проследяване и дебъгване
-
Валидация на данни
-
Работа с бази от данни
-
Управление на състоянието
-
Оптимизация, конфигурация и разгръщане
-
Сигурност
В тази тема ...
В настоящата тема ще разгледаме разработката на уеб приложения с ASP.NET. В началото ще запознаем читателя с уеб формите и техните основни директиви, атрибути и тагове. Ще разгледаме видовете уеб контроли, които се използват при изграждане на уеб приложения, и по-важните от тях. Ще разгледаме концепцията за отделяне на кода от потребителския интерфейс (code-behind), ще обясним програмния модел на ASP.NET и работата със събития. След това ще демонстрираме как да работим с данни, извлечени от релационна база от данни. Ще обърнем специално внимание на принципите на свързване на контроли с данни (data binding) и ще обясним как да свързваме списъчни и итериращи контроли. Ще разгледаме как можем да управляваме вътрешното състояние на уеб приложението: работа със сесии и cookies, достъп до контекста на приложението и технологията ViewState. Ще покажем как да валидираме данни, въведени от потребителя, чрез различните валидатори. Ще обясним концепцията за потребителските контроли като метод за преизползване на части от приложението. Ще се научим как да проследяваме и дебъгваме уеб приложения. Ще покажем как се оптимизират, конфигурират и разгръщат ASP.NET уеб приложения (кеширане, настройки и deployment). Ще обърнем специално внимание и на сигурността при уеб приложенията.
Въведение
ASP.NET е библиотека за разработка на уеб приложения и уеб услуги, стандартна част от .NET Framework. Тя дава програмен модел и съвкупност от технологии, чрез които можем да изграждаме сложни уеб приложения.
Изпълнение на ASP.NET уеб приложение
Уеб приложенията използват модела заявка-отговор (request-response), както е показано на фигурата:
-
Потребителят въвежда в браузъра адрес на страница (URL). Браузърът изпраща HTTP заявка (request) към уеб сървъра.
-
Сървърът получава заявката и я обработва. В случая с ASP.NET, IIS намира процес, който може да обработи дадената заявка.
-
Резултатът от вече обработената заявка се изпраща обратно към потребителя/клиента под формата на HTTP отговор (response).
-
Браузърът показва получения отговор като уеб страница.
Преглед на технологията ASP.NET
ASP.NET е програмна платформа за разработка на уеб приложения, предоставена от .NET Framework. Тя предлага съвкупност от класове, които работят съвместно, за да обслужват HTTP заявки. Също като класическите ASP (Active Server Pages), ASP.NET се изпълнява на уеб сървър и предоставя възможност за разработка на интерактивни, динамични, персонализирани уеб сайтове, както и на уеб базирани приложения. АSP.NET е също и платформа за разработка и използване на уеб услуги.
ASP.NET и .NET Framewrok
На фигурата са показани основните компоненти на .NET Framework, част от които е библиотеката ASP.NET.
Разлики между ASP и ASP.NET
Разликите между ASP и АSP.NET са значителни. АSP.NET предлага ново ниво на абстракция за разработка на уеб приложения. Ключова характеристика на ASP.NET е възможността за разделяне на кода описващ дизайна от кода, реализиращ логиката на приложенията. ASP.NET приложенията могат да бъдат разработвани с помощта на всички езици за програмиране, които се компилират до MSIL код (C#, VB.NET, J#, Managed C++ и много други).
Фундаменти на ASP.NET
Основният компонент на ASP.NET е уеб формата – абстракция на HTML страницата, която интернет потребителите виждат в браузъра си. Замисълът на създателите на ASP.NET е работата с уеб формите да бъде интуитивна и максимално улеснена, както е при Windows Forms формите. ASP.NET предлага едно високо ниво на абстракция, предоставяйки ни богат избор от уеб контроли, подобни на тези в Windows Forms, и намалява нуждата програмиста да работи с чист HTML код.
Всяко ASP.NET приложение се изгражда от една или повече уеб форми, които могат да взаимодействат помежду си, създавайки интерактивна система.
Как работи ASP.NET?
Традиционните уеб страници могат да изпълняват код на клиента, с който извършват сравнително прости операции.
ASP.NET уеб формите могат да изпълняват и код от страна на сървъра (server-side code). С него те генерират HTML код, който да се върне като отговор на заявката. За целта могат да се извършват обработки, изискващи достъп до бази от данни и до ресурсите на самия сървър, генериращи допълнителни уеб форми и други.
Всяка уеб форма в крайна сметка се трансформира в HTML код, пригоден за типа на клиентския браузър. Това позволява улеснена разработка на уеб форми. Те работят практически върху всяко устройство, което разполага с интернет свързаност и уеб браузър.
Разделяне на визуализация от бизнес логика
Един от основните проблеми на класическите ASP беше смесването на HTML с бизнес логика. Това правеше страницата трудна за разбиране, поддръжка и дебъгване. Файловете ставаха големи и сложни и се забавяше процеса на разработка на приложението. Една от основните архитектурни цели на АSP.NET e справянето с този проблем. Тъй като реализацията на потребителския интерфейс и на бизнес логика са до голяма степен, две независими задачи, ASP.NET предоставя модел за разработка, при който те са физически разделени в отделни файлове.
Програмирането за клиентския интерфейс (UI) се разделя на две части:
-
За визуализация се използва HTML-подобен код, записан във файл с разширение .aspx.
-
Бизнес логиката се дефинира в отделен файл (с разширение .cs за C# или .vb за Visual Basic .NET), съдържащ конкретната имплементация на определен програмен език.
Файлът, съдържащ бизнес логиката, се нарича "Изпълним код на уеб формата" (Code-behind).
Зад всяка уеб форма стои богатият обектен модел на .NET Framework и тя се компилира до клас в асемблито на проекта ни.
Класът, генериран от .aspx файл, се непряк наследник на Page класа. Съществува междинен клас в йерархията, който е за изпълнимия код (code-behind class). В него можем лесно да добавяме методи, обработка на събития и др.
Чрез "изпълнимия код" представянето е разделено от логиката. Това улеснява значително поддръжката на .aspx страниците.
Компоненти на ASP.NET
Ето кои са основните компоненти, от които се изграждат уеб приложенията, базирани на ASP.NET:
Web Forms – описват интерфейса за ASP.NET приложение.
Code-behind класове – асоциират се с уеб форми и контроли и съдържат server-side код.
Web.config – файл, съдържащ конфигурацията на ASP.NET приложението.
Machine.config – файл с глобални настройки за уеб сървъра.
Global.asax – файл, съдържащ код за прихващане на събития на ниво приложение (application level events).
Съществуват и други компоненти като Http Modules, Http Handlers и други, но на тях няма да се спираме.
Пример за уеб приложение
Ще създадем примерно уеб приложение чрез Visual Studio.NET, за да разгледаме структурата на директориите и файловете му. Отваряме Visual Studio.NET и създаваме нов уеб проект с име Demo-1-ExampleOfWebApplication:
Отляво е кутията с инструменти (toolbox), където са контролите. Нека добавим текстово поле и бутон, като привлачим двете контроли върху формата.
Можем да разгледаме кода на страницата (code-behind класа) като върху формата натиснем [F7].
Можем да компилираме и стартираме приложението с [Ctrl+F5].
ASP.NET Web Application проекти във VS.NET
При създаване на проект за .NET уеб приложение (ASP.NET Web Application) във Visual Studio .NET, се създават две директории.
В едната (по подразбиране това е \My Documents\Visual Studio Projects) се намира solution файла (.sln). Той описва проектите, участващи в приложението. Обикновено в поддиректории се съхраняват останалите проекти от solution файла.
Втората директория е с идентично име и се създава в уеб-достъпна папка, като най-често това е папката c:\inetpub\wwwroot. Тя съдържа файловете, които са нужни на уеб приложението: .aspx страниците, техните code-behind файлове и файловете Web.config и Global.asax. Когато се компилира проекта, се създава съответно асембли в директорията bin.
Забележка: Директорията c:\inetpub\wwwroot е коренната (root) виртуална директория по подразбиране на уеб сървъра Internet Information Server (IIS), с който по подразбиране работи Visual Studio.NET за разгръщане на приложенията си.
Виртуална директория е такава, която се вижда през протокола HTTP, например:
Ако отваряме сървъра локално, можем да го извикаме с адреса http://localhost/.
Като направим директорията c:\inetpub\wwwroot\Lecture-15-ASP.NET-and-Web-Applications\Demo-1-ExampleOfWebApplication, тя ще се вижда през протокола HTTP като виртуалната директория:
http://localhost/Lecture-15-ASP.NET-and-Web-Applications/Demo-1-ExampleOfWebApplication/.
Модел на изпълнение на ASP.NET
Моделът на изпълнение (execution model) на ASP.NET е следният:
-
Клиентският браузър изпраща HTTP GET заявка на сървъра.
-
Сървърът намира за коя страница е заявката и започва да я изпълнява.
-
ASP.NET парсерът интерпретира нейния сорс код.
-
Ако кодът не е бил компилиран в асембли, ASP.NET извиква компилатора.
-
Средата за изпълнение (CLR) зарежда в паметта и изпълнява Microsoft Intermediate Language (MSIL) кода.
-
Страницата се изпълнява и генерира HTML код. Сървърът връща този резултат на клиента като HTTP отговор.
Сподели с приятели: |