![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Global.asaxСтр 1 из 64Следующая ⇒
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.
|