Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Global.asax






ASP.NET MVC

Урок 0. Вступление.

Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:

· Это.net. Я знаю.net и С#.

· Это компилируемый код.

· Это не ASP.NET WebForms, я работаю с html-кодом.

· Используется MVC-паттерн.

· Visual Studio – самое популярное средство разработки, в котором есть IntelliSense (что это? Очень краткое определение).

· Отличные инструменты отладки.

Всё это позволяет мне быстро и грамотно разрабатывать приложения. Главное – быстро.

Для работы нам понадобится

1. Visual Studio 2012 c установленным asp.net mvc 4 (https://www.asp.net/mvc/mvc4)

2. MS SQL Server для работы с БД (https://www.microsoft.com/en-us/sqlserver/editions/2012-editions/express.aspx)

3. Умение работать с Mercurial или Git (https://habrahabr.ru/post/108443/)

4. Знания по C#

Оглавление

· Урок 1. Мы просто создадим и запустим проект. И немного изучим NuGet. NLog и Logger.

· Урок 2. Изучение Dependency Injection. Изучим различные реализации. Ninject, Unity, Autofac

· Урок 3. Работа с БД. SQL-команды. LinqToSql

· Урок 4. Маршруты и связки. Структура asp.net mvc – приложения

· Урок 5. Создание записи в БД через веб-интерфейс. Валидация данных. Automapping

· Урок 6. Авторизация (и почему мы не используем стандартный MembershipProvider)

· Урок 7. Html, css, Bootrap, jquery. Справочные данные о клиентской части

· Урок 8. View, Razor. Изучаем View-engine Razor. Дополняем наше приложение страницей с обработкой ошибки

· Урок 9. Configuration, и работа с загрузкой файлов. Обработка изображений

· Урок A. Работа с почтой и sms

· Урок B. Json, работа с этим форматом. Json.net

· Урок С. Создание мультиязычного сайта

· Урок D. Scaffolding

· Урок E. Тестирование

· Урок F. Работа как она есть. Мои принципы работы. Как писать ТЗ.

Урок 1. Начало

Цель урока: Изучить Global.asax и поведение запуска веб-приложения, обработки веб-запроса. Изучение Nuget и Подключение протоколирования.

Начало

Создадим приложение ASP.NET MVC 4 Web Application «Lesson1».

 

Не будем запускать приложение, а сразу установим (если до этого не сделали) NuGet расширение.

 

NuGet Package Manager – это расширение для Visual Studio, которое позволяет добавлять в существующие проекты модули, которые значительно упрощают работу. При создании «Basic» asp.net mvc4 приложения в само приложение было добавлено изначально много модулей. Их список мы можем найти, кликнув в Manage NuGet Packages… в контекстном меню проекта

О них по порядку:

· Entity Framework – обеспечивает работу с БД

· jQuery (+ jQuery UI, jQuery Validation) – популярный javascript framework (о нем еще пойдет речь позже).

· Json.NET – классы для работы с json-форматом данных.

· knockoutjs - не очень популярная javascript библиотека для работы с Model View ViewModel архитектурой. (https://knockoutjs.com/)

· Microsoft.Net Framework 4 Http Client Libraries – программный интерфейс для работы с HttpContext-ом.

· Microsoft ASP.NET MVC 4 – собственно, классы паттерна проектирования MVC (то что есть предметом изучения)

· Microsoft ASP.NET Razor 2 – view-движок. Есть еще ASPX и Spark – мы о них также будем говорить позже

· Microsoft ASP.NET Universal Providers Core Libraries (Microsoft ASP.NET Universal Providers for LocalDB) – предоставляет инструменты для поддержки всех SQL Server 2005 (и более поздних) и для SQL Azure.

· Microsoft ASP.NET Web API (Microsoft ASP.NET Web API Client Libraries, Microsoft ASP.NET Web API Core Libraries, Microsoft ASP.NET Web API Web Host) – для создания REST приложений, работа с XML, JSON и так далее

· Microsoft ASP.NET Web Optimization Framework – оптимизирует передачу данных, например, минимизирует js-код

· Microsoft ASP.NET WebPages 2 – набор классов для работы во View

· Microsoft jQuery Unobtrusive Ajax (Microsoft jQuery Unobtrusive Validation) – jQuery библиотека для поддержки ненавящевого ajax/валидации

· Microsoft.Web.Infrastructure – позволяет динамически регистрировать HTTP-модули во время выполнения

· Modernizr – js-библиотека, которая позволяет использовать html5 и css3 в старых браузерах

· WebGrease – позволяет минифицировать html, css, js.

Теперь, когда мы примерно прикинули, из чего состоит наше приложение, давайте запустим его.


 

Для этого необходимо создать HomeController:

 

Для метода (действия) Index добавим View и выберем ~Views/Shared/_Layout.cshtml в качестве layout (типа master page):

Собственно, можем запускать.

Всё что мы увидим – это:

 

Почему контроллер надо было назвать именно Home и как это работает, мы будем изучать более подробно в следующих уроках.

Global.asax

А сейчас обратим внимание на файл Global.asax:

public class MvcApplication: System.Web.HttpApplication

{

protected void Application_Start()

{

AreaRegistration.RegisterAllAreas();

 

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

RouteConfig.RegisterRoutes(RouteTable.Routes);

BundleConfig.RegisterBundles(BundleTable.Bundles);

}

}

 

Класс MvcApplication наследует HttpApplication и содержит инструкции для инициализации приложения. Есть еще несколько событий, на которые можно добавить код. Рассмотрим их:

· public void Init() – приложение инициализируется или при первом вызове. Оно вызывается для всех экземпляров объекта HttpApplication.

· public void Dispose() – вызывается непосредственно перед уничтожением объекта HttpApplication. Это идеальное место для очистки ранее используемых ресурсов.

· Application_Error – наступает, когда необработанное исключение случается в приложении.

· Application_Start – наступает, когда первый экземпляр HttpApplication создается. Это позволяет создавать объекты доступные для всех экземпляров класса HttpApplication.

· Application_End – наступает, когда все созданные ранее экземпляры класса HttpApplication уничтожены. Это событие наступает только однажды в течение всего времени жизни приложения.

· Application_BeginRequest – наступает, когда приложение получает запрос. Первый раз это событие наступает для запроса страницы, когда пользователь вводит URL.

· Application_EndRequest – Последнее событие, которое наступает для запроса к приложению.

· Application_PreRequestHandlerExecute – наступает прежде, чем ASP.NET запустит обработчик страницы или веб-службу.

· Application_PostRequestHandlerExecute – наступает, когда ASP.NET заканчивает обработку.

· Applcation_PreSendRequestHeaders – наступает перед тем, как ASP.NET посылает клиенту (браузеру) HTTP заголовки.

· Application_PreSendContent – наступает перед тем, как ASP.NET посылает клиенту (браузеру) HTTP содержимое.

· Application_AcquireRequestState – наступает, когда ASP.NET получает текущее состояние (состояние сессии), связанное с текущим запросом.

· Application_ReleaseRequestState – наступает, когда ASP.NET завершает исполнение всех событий. В результате все модули сохраняют свои текущие состояния.

· Application_ResolveRequestCache – наступает, когда ASP.NET выполняет запрос авторизации. Это позволяет модулям кеширования обработать запрос и обслужить из кэша, минуя обработчик выполнения.

· Application_UpdateRequestCache – наступает, когда ASP.NET завершает выполнение обработчика, чтобы модули кеширования могли сохранить результат для использования в последующих ответах.

· Application_AuthenticateRequest – наступает, когда модуль идентификации устанавливает личность текущего пользователя как действительную. В текущий момент, учетные данные пользователя уже проверены.

· Application_AuthorizeRequest – наступает, когда модуль авторизации подтверждает, что пользователь может иметь доступ к ресурсам.

· Session_Start – наступает, когда новый пользователь заходит на сайт.

· Session_End – наступает, когда истекает время сессии пользователя, или он покидает сайт.

 

Хорошо. Теперь, чтобы воочию убедимся, что всё именно так и происходит, добавим протоколирование и сделаем это через добавление NLog модуля в NuGet.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.