Asp net что это такое

Обзор ASP.NET

ASP.NET — бесплатная интернет-платформа для создания замечательных веб-сайтов и веб-приложений с помощью HTML, CSS и JavaScript. Также можно создавать веб-API и использовать технологии реального времени, такие как веб-сокеты.

Начало работы

Установите Visual Studio 2019 Community Edition — бесплатную интегрированную среду разработки для ASP.NET в Windows.

Сайты и веб-приложения

ASP.NET предоставляет три платформы для создания веб-приложений: веб-формы, ASP.NET MVC и веб-страницы ASP.NET. Все три платформы стабильны и полноценны: замечательные веб-приложения можно создать с помощью любой из них. Независимо от того, какую платформу выберете, вы везде получите все преимущества и возможности ASP.NET.

Каждая платформа предназначена для определенного стиля разработки. Ваш выбор зависит от сочетания навыков программирования (знаний, опыта разработки), типа создаваемого приложения и удобного вам подхода к разработке.

Ниже приведен обзор каждой из платформ и некоторые идеи о выборе между ними. Если вы предпочитаете введение в видео, см. статью создание веб- сайтов с помощью ASP.NET и что такое Web Tools?

Веб-формы

С веб-формами ASP.NET можно создавать динамические веб-сайты, используя знакомую модель перетаскивания, управляемую событиями. Область конструирования и сотни элементов управления и компонентов позволяют быстро создавать комплексные сайты с эффективным пользовательским интерфейсом и доступом к данным.

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

Веб-страницы ASP.NET

Веб-страницы ASP.NET и синтаксис Razor обеспечивают быстрый, понятный и простой способ объединения серверного кода с HTML для создания динамического веб-содержимого. Подключайтесь к базам данных, добавляйте видео, ссылки на сайты социальных сетей и множество других дополнительных функций, чтобы создавать прекрасные сайты, которые соответствуют новейшим веб-стандартам.

Примечания о веб-формах, MVC и веб-страницах

Кроме того, эти три платформы не полностью независимы друг от друга и выбор одной из них не препятствует использованию другой. Так как платформы могут сосуществовать в одном и том же веб-приложении, некоторые компоненты приложений, написанные с помощью разных платформ, встречаются нечасто. Например, клиентские части приложения могут быть разработаны в MVC для оптимизации разметки, тогда как доступ к данным и административные части разрабатываются в веб-формах для использования преимуществ элементов управления данными и простого доступа к данным.

Веб-API

Технологии в реальном времени

ASP.NET SignalR — это новая библиотека для разработчиков ASP.NET, которая упрощает разработку веб-функций в режиме реального времени. SignalR обеспечивает двунаправленную связь между сервером и клиентом. Серверы могут мгновенно отправлять содержимое подключенным клиентам по мере доступности. SignalR поддерживает веб-сокеты и обращается к другим совместимым методам для старых браузеров. SignalR включает API для управления подключениями (например, события подключения и отключения), группирования соединений и авторизации.

Мобильные приложения и сайты

ASP.NET может работать с собственными мобильными приложениями с помощью серверной части веб-API, а также мобильных веб-сайтов, использующих такие платформы разработки, как начальная загрузка Twitter. При создании собственного мобильного приложения можно легко создать веб-API на основе JSON для управления доступом к данным, проверкой подлинности и Push-уведомлениями для приложения. Если вы создаете реагирующий мобильный сайт, вы можете использовать любую платформу CSS или открытую систему сетки или выбрать мощную мобильную систему, например jQuery Mobile или Sencha, а также замечательные мобильные приложения с PhoneGap.

Одностраничные приложения

Одностраничные приложения ASP.NET (SPA) позволяют создавать приложения, включающие значительное взаимодействие на стороне клиента, с использованием HTML 5, CSS 3 и JavaScript. Visual Studio включает шаблон для создания одностраничных приложений с помощью knockout.js и веб-API ASP.NET. Помимо встроенного шаблона SPA-шаблоны, созданные сообществом разработчиков, также доступны для загрузки.

Веб-перехватчики

Веб-перехватчик — это упрощенный HTTP-шаблон, обеспечивающий простую модель подписки для связи друг с другом веб-API и SaaS-служб. Когда в службе происходит событие, зарегистрированным подписчикам отправляется уведомление в форме POST HTTP-запроса. Запрос POST содержит сведения о событии, благодаря чему получатель может выполнить соответствующие действия.

Веб-перехватчики используются в большом количестве служб, включая Dropbox, GitHub, Instagram, MailChimp, PayPal, Slack, Trello и многих других. Например, веб-перехватчик может указывать, что файл был изменен в Dropbox, изменение кода зафиксировано в GitHub, платеж был инициализирован в PayPal или была создана карточка в Trello.

Источник

Введение в ASP.NET Core

ASP.NET Core является кроссплатформенной, высокопроизводительной средой с открытым исходным кодом для создания современных облачных приложений, подключенных к Интернету. ASP.NET Core позволяет выполнять следующие задачи:

Преимущества, обеспечиваемые ASP.NET Core

Миллионы разработчиков использовали и продолжают использовать ASP.NET 4.x для создания веб-приложений. ASP.NET Core — это модификация ASP.NET 4.x с архитектурными изменениями, формирующими более рациональную и более модульную платформу.

ASP.NET Core предоставляет следующие преимущества:

Создание веб-API и пользовательского веб-интерфейса с помощью ASP.NET Core MVC

ASP.NET Core MVC предоставляет функции, которые позволяют создавать веб-интерфейсы API и веб-приложения.

Клиентская разработка

ASP.NET Core легко интегрируется с распространенными клиентскими платформами и библиотеками, в том числе Blazor, Angular, React и Bootstrap. Подробнее см. Введение в ASP.NET Core Blazor и связанные материалы о разработке на стороне клиента.

Целевые версии платформы ASP.NET Core

Рекомендуемая схема обучения

Для знакомства с разработкой приложений ASP.NET Core рекомендуется изучить следующую последовательность учебников.

Пройдите учебник по тому типу приложения, которое вы собираетесь разрабатывать или обслуживать.

Тип приложенияСценарийУчебник
Веб-приложениеРазработка нового веб-интерфейса на стороне сервераНачало работы с Razor Pages
Веб-приложениеОбслуживание приложения MVCНачало работы с MVC
Веб-приложениеРазработка веб-интерфейса на стороне клиентаНачало работы с Blazor
Веб-интерфейс APIСлужбы HTTP RESTFULСоздание веб-API†
Приложение удаленного вызова процедурРазработка в соответствии с парадигмой «Сначала контракт» с использованием Protocol BuffersНачало работы со службой gRPC
Приложение режима реального времениДвунаправленный обмен данными между сервером и подключенными к нему клиентамиНачало работы с SignalR

Пройдите учебник, посвященный основам доступа к данным.

СценарийУчебник
Разработка нового приложенияRazor Pages с Entity Framework Core
Обслуживание приложения MVCMVC с Entity Framework Core

Ознакомьтесь с обзором основ ASP.NET Core, относящихся ко всем типам приложений.

Просмотрите содержание, чтобы найти другие интересующие вас темы.

†Доступен интерактивный учебник по веб-API. Локальная установка средств разработки не требуется. Код выполняется в Azure Cloud Shell в браузере, а для тестирования используется curl.

Справочное руководство по миграции приложений ASP.NET 4.x на ASP.NET Core см. в статье Миграция с ASP.NET на ASP.NET Core.

ASP.NET Core является кроссплатформенной, высокопроизводительной средой с открытым исходным кодом для создания современных облачных приложений, подключенных к Интернету. ASP.NET Core позволяет выполнять следующие задачи:

Преимущества, обеспечиваемые ASP.NET Core

Миллионы разработчиков использовали и продолжают использовать ASP.NET 4.x для создания веб-приложений. ASP.NET Core — это модификация ASP.NET 4.x с архитектурными изменениями, формирующими более рациональную и более модульную платформу.

ASP.NET Core предоставляет следующие преимущества:

Создание веб-API и пользовательского веб-интерфейса с помощью ASP.NET Core MVC

ASP.NET Core MVC предоставляет функции, которые позволяют создавать веб-интерфейсы API и веб-приложения.

Клиентская разработка

ASP.NET Core легко интегрируется с распространенными клиентскими платформами и библиотеками, в том числе Blazor, Angular, React и Bootstrap. Подробнее см. Введение в ASP.NET Core Blazor и связанные материалы о разработке на стороне клиента.

Рекомендуемая схема обучения

Для знакомства с разработкой приложений ASP.NET Core рекомендуется изучить следующую последовательность учебников и статей.

Пройдите учебник по тому типу приложения, которое вы собираетесь разрабатывать или обслуживать.

Тип приложенияСценарийУчебник
Веб-приложениеРазработка нового приложенияНачало работы с Razor Pages
Веб-приложениеОбслуживание приложения MVCНачало работы с MVC
Веб-интерфейс APIСоздание веб-API†
Приложение режима реального времениНачало работы с SignalR

Пройдите учебник, посвященный основам доступа к данным.

СценарийУчебник
Разработка нового приложенияRazor Pages с Entity Framework Core
Обслуживание приложения MVCMVC с Entity Framework Core

Ознакомьтесь с обзором основ ASP.NET Core, относящихся ко всем типам приложений.

Просмотрите содержание, чтобы найти другие интересующие вас темы.

† Доступен новый учебник по веб-API с прохождением в браузере, не требующий установки локальной интегрированной среды разработки. Код выполняется в Azure Cloud Shell, а для тестирования используется curl.

Справочное руководство по миграции приложений ASP.NET на ASP.NET Core см. в статье Миграция с ASP.NET на ASP.NET Core.

Загрузка примера

Многие статьи и учебники содержат ссылки на примеры кода.

Директивы препроцессора в примере кода

Например, в следующем списке символов #define видно, что доступно четыре сценария (один сценарий на символ). В текущем примере конфигурации запускается сценарий TemplateCode :

Дополнительные сведения об использовании директив препроцессора C# для выборочной компиляции фрагментов кода см. в разделах #define (Справочник по C#) и #if (Справочник по C#).

Регионы в примере кода

Некоторые примеры приложений содержат фрагменты кода внутри директив C# #region и #endregion. Система сборки документации вставляет эти регионы в обработанные разделы документации.

Названия регионов обычно содержат слово «фрагмент». В следующем примере показан регион с именем snippet_WebHostDefaults :

На предыдущий фрагмент кода C# указывает ссылка в следующей строке в файле Markdown раздела:

Вы можете спокойно проигнорировать или удалить директивы #region и #endregion вокруг кода. Не изменяйте код внутри этих директив, если планируете запустить примеры сценариев, описанные в разделе. Вы можете изменить код, экспериментируя с другими сценариями.

Критические изменения и советы по безопасности

Критические изменения и рекомендации по безопасности отображаются в репозитории объявлений. Объявления можно ограничить определенной версией, выбрав фильтр меток.

Дальнейшие действия

Дополнительные сведения см. в следующих ресурсах:

Источник

Общие сведения ASP.NET Core MVC

Автор: Стив Смит (Steve Smith)

ASP.NET MVC является многофункциональной платформой для создания веб-приложений и API-интерфейсов с помощью структуры проектирования Model-View-Controller.

Шаблон MVC

Структура архитектуры MVC разделяет приложение на три основных группы компонентов: модели, представлении и контроллеры. Это позволяет реализовать принципы разделения задач. Согласно этой структуре запросы пользователей направляются в контроллер, который отвечает за работу с моделью для выполнения действий пользователей и (или) получение результатов запросов. Контроллер выбирает представление для отображения пользователю со всеми необходимыми данными модели.

На следующей схеме показаны три основных компонента и существующие между ними связи.

Asp net что это такое. Смотреть фото Asp net что это такое. Смотреть картинку Asp net что это такое. Картинка про Asp net что это такое. Фото Asp net что это такое

Такое распределение обязанностей позволяет масштабировать приложение в контексте сложности, так как проще писать код, выполнять отладку и тестирование компонента (модели, представления или контроллера) с одним заданием. Гораздо труднее обновлять, тестировать и отлаживать код, зависимости которого находятся в двух или трех этих областях. Например, логика пользовательского интерфейса, как правило, подвергается изменениям чаще, чем бизнес-логика. Если код представления и бизнес-логика объединены в один объект, содержащий бизнес-логику, объект необходимо изменять при каждом обновлении пользовательского интерфейса. Это часто приводит к возникновению ошибок и необходимости повторно тестировать бизнес-логику после каждого незначительного изменения пользовательского интерфейса.

Представление и контроллер зависят от модели. Однако сама модель не зависит ни от контроллера, ни от представления. Это является одним из ключевых преимуществ разделения. Такое разделение позволяет создавать и тестировать модели независимо от их визуального представления.

Функции модели

Модель в приложении MVC представляет состояние приложения и бизнес-логику или операций, которые должны в нем выполняться. Бизнес-логика должна быть включена в состав модели вместе с логикой реализации для сохранения состояния приложения. Как правило, строго типизированные представления используют типы ViewModel, предназначенные для хранения данных, отображаемых в этом представлении. Контроллер создает и заполняет эти экземпляры ViewModel из модели.

Функции представления

Функции контроллера

Контроллеры — это компоненты для управления взаимодействием с пользователем, работы с моделью и выбора представления для отображения. В приложении MVC представление служит только для отображения информации. Обработку введенных данных, формирование ответа и взаимодействие с пользователем обеспечивает контроллер. В структуре MVC контроллер является начальной отправной точкой и отвечает за выбор рабочих типов моделей и отображаемых представлений (именно этим объясняется его название — он контролирует, каким образом приложение отвечает на конкретный запрос).

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

Если ваш контроллер часто выполняет одни и те же виды действий, переместите эти действия в фильтры.

ASP.NET Core MVC

ASP.NET Core MVC представляет собой упрощенную, эффективно тестируемую платформу с открытым исходным кодом, оптимизированную для использования с ASP.NET Core.

ASP.NET Core MVC предоставляет основанный на шаблонах способ создания динамических веб-сайтов с четким разделением задач. Она обеспечивает полный контроль разметки, поддерживает согласованную с TDD разработку и использует новейшие веб-стандарты.

Маршрутизация

Платформа ASP.NET Core MVC создана на основе маршрутизации ASP.NET Core — мощного компонента сопоставления URL-адресов, который позволяет создавать приложения с понятными и поддерживающими поиск URL-адресами. Вы можете определять шаблоны именования URL-адресов приложения, эффективно работающие для оптимизации для поисковых систем (SEO) и для создания ссылок, независимо от способа организации файлов на веб-сервере. Вы можете определять маршруты с помощью понятного синтаксиса шаблонов маршрутов, который поддерживает ограничения значений маршрутов, значения по умолчанию и необязательные значения.

Маршрутизация на основе соглашений позволяет глобально определять форматы URL-адресов, которые принимает приложение, и то, как каждый из этих форматов соответствует конкретному методу действия на данном контроллере. При поступлении входящего запроса модуль маршрутизации выполняет синтаксический анализ URL-адреса и соотносит его с одним из определенных форматов URL-адресов, а затем вызывает метод действия связанного контроллера.

Маршрутизация атрибутов используется для указания сведений о маршрутизации путем добавления атрибутов, определяющих маршруты приложения, к контроллерам и действиям. Это означает, что определения маршрутов помещаются рядом с контроллером и действием, с которым они связаны.

Привязка модели

Привязка модели в ASP.NET Core MVC преобразует данные запроса клиента (значения форм, данные маршрута, параметры строки запроса, заголовки HTTP) в объекты, которые может обрабатывать контроллер. В результате логике контроллера не требуется определять данные входящего запроса — данные просто доступны в виде параметров для методов действий.

Проверка модели

ASP.NET MVC поддерживает возможность проверки, дополняя модель объекта атрибутами проверки заметок к данным. Атрибуты проверки проверяются на стороне клиента до размещения значений на сервере, а также на сервере перед выполнением действия контроллера.

Платформа обрабатывает проверку данных запроса на клиенте и на сервере. Логика проверки, указанная в типах модели, добавляется в готовые для просмотра представления в виде ненавязчивых заметок и реализуется в браузере с помощью подключаемого модуля jQuery Validation.

Внедрение зависимостей

ASP.NET Core имеет встроенную поддержку внедрения зависимостей (DI). В ASP.NET MVC Core контроллеры могут запрашивать необходимые служб через свои конструкторы, предоставляя им возможность следовать принципу явных зависимостей.

Кроме того, приложение может использовать внедрение зависимостей в файлы представления с помощью директивы @inject :

Фильтры

Фильтры помогают разработчикам решать общие задачи, такие как обработка исключений или авторизация. Фильтры активируют пользовательскую логику предварительной и завершающей обработки для методов действий и могут быть настроены для запуска в определенные моменты в конвейерном выполнении определенного запроса. Фильтры могут применяться к контроллерам или действиям в виде атрибутов (или могут выполняться глобально). В состав платформы входит несколько фильтров (например, Authorize ). [Authorize] является атрибутом, который используется для создания фильтров авторизации MVC.

Области

области позволяют секционировать крупные ASP.NET Core веб-приложения MVC в более мелкие функциональные группы. Область является структурой MVC внутри приложения. В проекте MVC логические компоненты, такие как модель, контроллер и представление, находятся в разных папках, и для создания связи между этими компонентами MVC использует соглашения об именовании. Крупное приложение может быть целесообразно разделить на отдельные высокоуровневые области функциональности. Например, приложение электронной коммерции с несколькими подразделениями, например извлечение, выставление счетов и поиск и т. д. Каждое из этих устройств имеет собственные представления логических компонентов, контроллеры и модели.

Веб-API

Помимо того, что ASP.NET Core MV прекрасно подходит для создания веб-сайтов, эта платформа располагает мощной поддержкой для построения веб-API. Создавайте службы, доступные для широкого круга клиентов, включая браузеры и мобильные устройства.

Платформа поддерживает согласования содержимого HTTP со встроенной поддержкой для форматирования данных в виде JSON или XML. Пишите пользовательские модули форматирования для добавления поддержки собственных форматов.

Используйте функции создания ссылок для поддержки гипермедиа. Легко включайте поддержку общего доступа к ресурсам независимо от источника (CORS) для совместного использования веб-API в нескольких веб-приложениях.

Тестирование

Благодаря используемым интерфейсам и внедрению зависимостей платформа хорошо подходит для модульного тестирования. Кроме того, с помощью таких компонентов, как TestHost и поставщик InMemory для Entity Framework, можно быстро и просто выполнять интеграционные тесты. Узнайте больше о тестировании логики контроллеров.

Razor Просмотреть подсистему

ASP.NET Core представления MVC используют Razor обработчик представлений для отображения представлений. Razor — Это компактный, выразительный и жидкий язык разметки шаблонов для определения представлений с помощью встраиваемого кода C#. Razor используется для динамического создания веб-содержимого на сервере. Серверный код можно полностью комбинировать с содержимым и кодом на стороне клиента.

С помощью Razor обработчика представлений можно определять макеты, частичные представления и заменяемые разделы.

Строго типизированные представления

Razor представления в MVC могут быть строго типизированы на основе модели. Контроллеры передают строго типизированную модель в представления для поддержки в них IntelliSense и проверки типов.

Например, следующее представление отображает модель типа IEnumerable

Вспомогательные функции тегов

Вспомогательные функции тегов позволяют коду на стороне сервера принимать участие в создании и ОТРИСОВКЕ HTML-элементов в Razor файлах. Вспомогательные функции тегов используются для определения настраиваемых тегов (например, ) или для изменения поведения существующих тегов (например, ). Вспомогательные функции тегов привязываются к определенным элементам на основе имени элемента и его атрибутов. Они предоставляют преимущества отрисовки на стороне сервера, сохраняя при этом возможности редактирования HTML.

Существует множество встроенных вспомогательных функций тегов для общих задач — например, для создания форм, ссылок, загрузки ресурсов и т. д. Кроме того, огромное количество функций доступно в общедоступных репозиториях GitHub и в качестве пакетов NuGet. Вспомогательные функции тегов разрабатываются на C# и предназначены для HTML-элементов на основе имени элемента, имени атрибута или родительского тега. Например, встроенную функцию LinkTagHelper можно использовать для создания ссылки на действие AccountsController для Login :

С помощью EnvironmentTagHelper можно включать в приложения различные сценарии (например, необработанные или минифицированные) для конкретной среды выполнения (разработки, промежуточной или производственной):

Вспомогательные функции тегов обеспечивают удобный для HTML процесс разработки и расширенную среду IntelliSense для создания HTML и Razor разметки. Большинство встроенных вспомогательных функций тегов работают с существующими HTML-элементами и предоставляют для них атрибуты на стороне сервера.

Компоненты представлений

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

Источник

Особенности ASP.NET

В результате этого появился ряд удивительно совершенных технологий для выполнения всего, начиная от построения приложений Windows и заканчивая выполнением запросов в базах данных, и специально ориентированный на разработку веб-сайтов инструмент под названием ASP.NET.

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

Также появилось и еще как минимум одно новое направление, составляющее конкуренцию традиционному программированию с использованием ASP.NET, которое получило название ASP.NET MVC.

В разных пространствах имен предоставляется разная функциональность, но все вместе они предлагают функциональные возможности для практически каждого аспекта области распределенной разработки, начиная с организации очередей сообщений и заканчивая обеспечением безопасности. Весь целиком этот обширный набор инструментов называется библиотекой классов (class library).

Код ASP.NET компилируется, а не интерпретируется

Приложения ASP.NET в действительности проходят через два этапа компиляции.

На следующем рисунке показан этот состоящий из двух этапов процесс компиляции:

Asp net что это такое. Смотреть фото Asp net что это такое. Смотреть картинку Asp net что это такое. Картинка про Asp net что это такое. Фото Asp net что это такое

Разумеется, этап оперативной компиляции, пожалуй, не был бы столь полезным, если бы его нужно было выполнять при каждом запросе той или иной страницы веб-сайта. К счастью, приложения ASP.NET не нуждаются в выполнении компиляции при каждом запрашивании веб-страницы. Вместо этого код на IL в них создается один раз и генерируется заново только в случае изменения исходного кода, а файлы, содержащие машинный код, кэшируются в системном каталоге, путь к которому выглядит примерно так:

Конкретный момент, когда код компилируется в IL, зависит от того, каким образом создается и развертывается веб-приложение. В случае создания веб-приложения в виде веб-проекта в Visual Studio код компилируется в IL при компиляции проекта. В случае его создания в виде облегченного веб-сайта без проекта, код для каждой из его страниц компилируется при первом запросе соответствующей страницы. Но и в том, и в другом случае через второй этап компиляции (из IL в машинный код) код проходит лишь при первом его запуске.

В ASP.NET также включены инструменты для выполнения предварительной компиляции, с помощью которых можно делать так, чтобы приложение компилировалось сразу же в машинный код прямо после его развертывания на производственном веб-сервере. Это позволяет избежать накладных расходов, связанных с выполнением первого этапа компиляции при развертывании готового приложения (и исключить возможность подделки или изменения кода другими людьми).

В ASP.NET поддерживается множество языков программирования

Хотя при разработке приложения предпочтение, скорее всего, будет отдано какому-то одному языку, выбор языка никак не влияет на то, какие задачи с помощью приложения можно будет решать. Причина в том, что какой бы язык ни использовался, код всегда будет компилироваться в IL.

Чтобы лучше понять, что собой представляет IL, не помешает рассмотреть простой пример. Поэтому давайте возьмем следующий код на языке C#:

Теперь посмотрим на него с другой стороны. Ниже приведен код IL для его метода Main():

За счет терпения и небольших логических рассуждений можно разобраться в коде IL и вычислить, что в нем происходит. Тот факт, что IL настолько просто дизассемблируется, чреват проблемами с конфиденциальностью и управлением кодом, но разработчики приложений ASP.NET беспокоиться об этом не должны, потому что весь код ASP.NET сохраняется и выполняется на сервере. Поскольку клиент никогда не получает скомпилированного файла кода, никакой возможности декомпилировать его не будет.

Если же подобные проблемы все-таки беспокоят, рассмотрите вариант применения маскировщика (обфускатора) для запутывания кода и превращения его в более трудный для понимания. (Маскировщик, например, может переименовать все переменные и назначить им имена вроде f__а__234). В состав Visual Studio входит ограниченная версия популярного маскировщика Dotfuscator.

Важно отметить, что IL был недавно признан стандартом Ecma и ISO. Это может послужить толчком к скорому признанию таковым и других общеязыковых платформ, предназначенных для использования на других платформах. Наилучшим примером является проект Mono.

ASP.NET обслуживается средой CLR

Автоматическое управление памятью и сборкой мусора

При каждом создании в приложении экземпляра объекта ссылочного типа CLR выделяет для него в памяти соответствующее пространство в управляемой куче. Вручную очищать это пространство в памяти никогда не потребуется. При выходе ссылки на объект за пределы области видимости (или завершении работы приложения) объект сразу же становится доступным для сборщика мусора.

Сборщик мусора периодически запускается внутри CLR и автоматически восстанавливает неиспользуемую память, которую занимают более недоступные объекты. Подобная модель избавляет от необходимости иметь дело с низкоуровневыми деталями манипулирования памятью в C++ и запутанного подсчета ссылок в СОМ.

Безопасность типов

Расширяемые метаданные

Структурированная обработка ошибок

Многопоточностъ

Среда CLR предоставляет пул потоков, которые различные классы могут использовать. Например, можно вызывать методы, считывать файлы и взаимодействовать с веб-службами асинхронным образом, не создавая явно никаких новых потоков.

ASP.NET является объектно-ориентированной технологией

Технология ASP предоставляет довольно слабую объектную модель. Она поддерживает весьма небольшой набор объектов, которые являются просто тонким уровнем, скрывающим детали HTTP и HTML.

Одним из наилучших примеров поддержки объектно-ориентированного поведения в ASP.NET являются серверные элементы управления. Эти элементы управления представляют собой инкапсуляцию в миниатюре. Разработчики могут манипулировать объектами элементов управления программно с использованием кода для настройки их внешнего вида, предоставления отображаемых данных и даже реагирования на события.

Вся низкоуровневая HTML-разметка, которую визуализируют эти элементы управления, скрывается из вида. Вместо того чтобы вынуждать разработчика писать низкоуровневый код HTML-разметки вручную, объекты этих элементов управления сами преобразуются в соответствующие HTML-элементы непосредственно перед отправкой веб-сервером страницы клиенту.

Таким образом, серверные элементы управления в ASP.NET позволяют абстрагироваться от низкоуровневых деталей программирования HTML и HTTP.

Ниже приведен небольшой пример со стандартным текстовым полем HTML, которое можно определить в веб-странице ASP.NET:

После добавления атрибута runat=»server» этот статический фрагмент HTML превращается в полностью функциональный серверный элемент управления, которым можно манипулировать в коде. После этого можно работать с генерируемыми им событиями, устанавливать атрибуты и привязывать его к источнику данных.

Например, установить текст для этого поля при первой загрузке страницы можно с помощью следующего кода C#:

В этом коде устанавливается свойство Value объекта HtmlInputText. В конечном итоге указанная строка появится в текстовом поле на визуализируемой и отправляемой клиенту HTML-странице.

HTML- и веб-элементы управления

На момент создания ASP.NET существовало два типа мышления. Одних разработчиков ASP.NET больше интересовали серверные элементы управления, которые бы в точности соответствовали существующему набору элементов управления HTML. Такой подход позволяет создавать интерфейсы для веб-страниц ASP.NET в редакторах HTML и предоставляет быстрый путь для миграции существующих страниц ASP.

Однако другие разработчики ASP.NET видели будущее в другом — в многофункциональных серверных элементах управления, которые бы не просто имитировали отдельные дескрипторы HTML. Эти элементы управления могли бы визуализировать свой интерфейс из десятков отдельных элементов HTML и при этом все равно предоставлять программистам простой объектный интерфейс для работы и позволять им использовать программируемые меню, календари, списки данных, средства проверки данных и т.д.

После некоторых размышлений в Microsoft решили обеспечить обе этих модели. Пример серверных элементов управления HTML, отображаемых непосредственно на базовый набор HTML-дескрипторов, уже был показан ранее. Кроме них в ASP NET еще предлагаются и так называемые веб-элементы управления, которые предоставляют более высокий уровень абстракции и больше функциональных возможностей.

В большинстве случаев серверные элементы управления HTML применяются для обеспечения обратной совместимости и выполнения быстрой миграции, а веб-элементы управления — для создания новых проектов.

Дескрипторы веб-элементов управления в ASP.NET всегда начинаются с префикса asp:, за которым следует имя класса. Ниже показан пример создания текстового поля и флажка:

С этими элементами управления тоже можно взаимодействовать в коде следующим образом:

В состав семейства веб-элементов управления в ASP.NET входят как сложные визуализируемые элементы управления (вроде Calendar и TreeView), так и более упрощенные элементы управления (наподобие TextBox, Label и Button), которые довольно близко отображаются на существующие дескрипторы HTML. В последнем случае серверные HTML-элементы управления и их веб-варианты в ASP.NET предоставляют похожую функциональность, но веб-элементы управления делают это через более стандартизированный и упрощенный интерфейс.

В результате веб-элементы управления проще в освоении, а также более естественно подходят разработчикам Windows-приложений, которые переходят на разработку веб-приложений, потому что многие из имен их свойств похожи на имена соответствующих элементов управления Windows.

ASP.NET поддерживает все браузеры

Одним из самых больших испытаний для разработчиков веб-приложений является необходимость в обеспечении поддержки множества различных браузеров. В разных браузерах, версиях и конфигурациях технологии HTML, CSS и JavaScript поддерживаются по-разному. Разработчики веб-приложений должны выбирать, визуализировать содержимое в соответствии с наименьшими общими характеристиками или добавлять фрагменты для принятия во внимание специфических особенностей популярных браузеров.

В ASP.NET эта проблема решена удивительно интеллектуальным способом. Хотя внутри страницы ASP.NET можно извлечь информацию о браузере клиента и его возможностях, в действительности в ASP.NET рекомендуется игнорировать такой подход и пользоваться развитым комплектом серверных веб-элементов управления.

Эти серверные элементы управления генерируют разметку адаптивным образом, принимая во внимание все возможности клиента. Примером могут служить предлагаемые в ASP.NET элементы управления верификацией, которые используют JavaScript и DHTML (динамический HTML) для улучшения своего поведения в случае, если они поддерживается клиентом.

Другим примером является набор оснащенных Аjах элементов управления, которые применяют сложные процедуры JavaScript для проверки версий браузеров и используют тщательно протестированные обходные пути для обеспечения согласованного поведения. Эта функциональность является необязательной, но демонстрирует то, как интеллектуальные элементы управления могут извлекать максимум выгоды из современных браузеров без отгораживания от других клиентов. Лучше всего то, что никакого дополнительного кода для обеспечения поддержки обоих типов клиента писать не требуется.

ASP.NET позволяет легко выполнять развертывание и конфигурирование

Одним из самых трудных процессов, с которым разработчикам приходится сталкиваться, является развертывание готового приложения на производственном сервере. Понадобится не только переместить файлы веб-страниц, базы данных и компоненты, но и зарегистрировать эти компоненты, а также воссоздать ряд конфигурационных настроек. ASP.NET значительно упрощает этот процесс.

Распространение компонентов, которые используются в приложении, столь же просто. Для этого при развертывании веб-приложения нужно скопировать сборки компонентов вместе с файлами веб-сайта. Благодаря тому, что вся информация о компонентах сохраняется прямо в метаданных внутри файлов сборок, запускать программу регистрации и вносить изменения в системный реестр Windows не требуется.

При условии размещения всех этих компонентов в правильном месте (подкаталог Bin в каталоге веб-приложения), механизм ASP NET автоматически обнаруживает их и делает доступными для кода веб-страницы. С традиционными компонентами СОМ подобное было невозможно.

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

В ASP NET решение этой задачи тоже упрощено за счет минимизации зависимости от настроек IIS (Internet Information Services — информационные службы Интернета).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *