Содержание
ASP.NET (Active Server Pages .NET) — это бесплатная веб-платформа, созданная специалистами Microsoft для проектирования интерактивных веб-приложений, которые работают на платформе .NET.
Этот фреймворк предоставляет множество инструментов для разработки веб-приложений, включая:
Свое начало платформа ASP.NET берет на заре интернета — в 1990-х годах. Первые веб-страницы сугубо информативными и поэтому статическими. Но довольно быстро возникла необходимость добавлять в них интерактивные элементы. Например, формы для отправки данных на сервер, чаты или корзины для покупок.
Тогда Microsoft начали разрабатывать инструменты для проектирования динамических веб-страниц. Как результат, в 1996 году компания выпустила первую версию Active Server Pages (ASP). Это была серверная платформа для создания динамических веб-страниц на языке скриптов VBScript или JScript.
Сначала первая версия ASP была довольно популярной, но спустя несколько лед устарела и перестала удовлетворять современным (на то время) требованиям веб-разработки. Поэтому в 2000 году Microsoft начали работу над новой версией технологии. Работа над очередным релизом ASP началась с переименования проекта в ASP+.
ASP+ вышел более быстрым и масштабируемым, а также в нем исправили проблемы, связанные с безопасностью, управлением состояния и развертыванием.
Но главным нововведением в ASP+ стала поддержка языка C#, представленного компанией Microsoft в 2000 году. Более того, C# стал основным инструментом создания веб-приложений на платформе .NET.
Начать учить C# можно у наших партнеров — IT-школы Hillel. Базовый курс C# включает 16 занятий и стартует уже в апреле 2023 года.
В 2002 году ASP.NET выпустили вместе с платформой .NET Framework 1.0. Он предоставлял разработчикам мощный инструментарий, включая такие новые инструменты, как:
ASP.NET стал популярным и востребованным среди веб-разработчиков, потому что был гибким. Он позволял создавать сложные веб-приложения, которые могли обрабатывать большие объемы данных и работать с разными внешними источниками, включая базы данных.
Развивая проект ASP.NET, в 2016 году Microsoft выпустила новую версию платформы под названием ASP.NET Core. Разработчики обеспечили более высокую производительность, меньший размер приложения, а также совместимость с разными операционными системами, включая Linux и macOS.
Одно из ключевых изменений в ASP.NET Core — переработка архитектуры и базовых концепций. Вместо использования Application Domain, ASP.NET Core использует пространства имен и сборки для организации и управления кодом приложения.
Кроме того, ASP.NET Core предоставляет интегрированную поддержку для создания микросервисных приложений и API. Это открывает разработчикам возможность проектирования масштабируемых приложений.
В основе работы ASP.NET лежит принцип клиент-серверной архитектуры и протокол HTTP:
Дальше платформа поддерживает состояние между запросами и ответами, такие как использование куков (cookies) или сессий (sessions). Состояние может использоваться, например, для сохранения информации о пользователе, чтобы избежать повторной аутентификации при каждом запросе.
Если возникают ошибки в ходе обработки запроса, ASP.NET может создавать специальную страницу ошибок. Эта страница разработчикам разобраться с ситуацией: понять, что произошло и как исправить ошибку.
Для координации работы с базами данных в ASP.NET используется технология ADO.NET (ActiveX Data Objects .NET), которая является частью .NET Framework.
ASP.NET поддерживает работу с такими базами данных (список не полный, перечислены основные БД):
Важно! Разработчик может использовать одинаковый код для работы с данными, вне зависимости от того, какая база данных задействована в проекте.
Это огромное преимущество ADO.NET, потому что так программист может сконцентрироваться на бизнес-логике приложения, а не на особенностях работы с конкретной базой данных.
Научиться работать не только с основами C#, но и системой ASP.NET, включая интеграцию технологии с базами данных, можно на курсе C# Advanced от Hillel.
Модели разработки в ASP.NET определяют, как приложение будет организовано.
Существует много разных моделей разработки, которые могут использоваться в ASP.NET в зависимости от задачи, которую нужно решить.
Ниже рассмотрим основные:
Одна из наиболее распространенных моделей разработки в ASP.NET.
Model-View-Controller (MVC) — это популярный шаблон проектирования, который разделяет приложение на три основных компонента: (1) модель, (2) представление и (3) контроллер:
MVC предназначена для разработки сложных веб-приложений с высокой степенью логики и обработки данных. Также модель часто выбирают для создания мобильных и одностраничных проектов.
Также очень распространенная модель разработки в ASP.NET, но она используется в основном в старых проектах.
В Web Forms приложение разрабатывается в виде набора веб-страниц, каждая из которых содержит разметку HTML и код на языке C# или VB.NET.
Веб-страницы могут быть связаны между собой с помощью элементов управления, таких как кнопки или ссылки.
В целом существует тенденция отказа от Web Forms в пользу ASP.NET MVC, которая является более продвинутой и предоставляет лучшие возможности для тестирования и управления HTML-разметкой.
Web API позволяет создавать RESTful веб-сервисы, которые будут обрабатывать HTTP-запросы и возвращать HTTP-ответы. С помощью Web API можно выполнять форматирование ответов (в JSON, XML и других форматах), конфигурировать маршрутизацию запросов, назначать фильтры действий и многое другое.
С помощью инструмента Web API можно создавать всевозможные веб-сервисы, например, сервисы авторизации или сервисы по обработке платежей, сервисы управления содержимым и многое другое. Он также может быть использован для создания мобильных приложений и других клиентских приложений, которые получают данные из веб-сервисов.
На курсе C# Advanced изучают много дополнительных технологий для того, чтобы работать с ASP.NET эффективно. В том числе курс включает модуль по Rest и API.
Появилась в последних версиях ASP.NET. Razor Pages обеспечивает простой и интуитивно понятный подход к созданию веб-страниц.
Она задействует упрощенный шаблон «модель-страница», где каждая страница имеет свою модель, которая содержит данные и логику страницы. Эта модель может быть связана с элементами на странице, такими как формы или кнопки:
Разница между MVC и Razor Page
Модель разработки Blazor используется как при создании SPA
В Blazor используется концепция компонентов, которые можно сравнить с пользовательскими элементами управления в других технологиях, таких как WPF и WinForms. Каждый компонент содержит свой логический код и пользовательский интерфейс.
Blazor поддерживает две реализации: (1) Blazor Server и (2) Blazor WebAssembly:
Код для создания простейшего веб-приложения в ASP.NET с использованием фреймворка MVC может выглядеть, например, так:
using System.Web.Mvc; namespace MyWebApp.Controllers { public class HomeController : Controller { // Отображение домашней страницы public ActionResult Index() { return View(); } // Обработка информации, введенной в форму [HttpPost] public ActionResult FormSubmit(string name, string email) { // Действия с данными return View("FormSubmitted"); } } }
Мы добавили HomeController
, который содержит два действия:
Index
для отображения домашней страницы;FormSubmit
для обработки данных из формы.Для отображения представлений (Views)Index
может выглядеть так:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Демонстрация</title> </head> <body> <h1>Вас приветствует Highload Today!</h1> <form action="/Home/FormSubmit" method="post"> <label for="name">Имя:</label> <input type="text" name="name" id="name" required /> <label for="email">E-mail:</label> <input type="email" name="email" id="email" required /> <button type="submit">Отправить</button> </form> </body> </html>
Результатом будет простая HTML-страница с формой для ввода имени и адреса электронной почты:
FormSubmit
контроллера HomeController
.
Представление для действия FormSubmit
выглядит как простое сообщение, которое отображается после успешной отправки формы:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Форма отправлена</title> </head> <body> <h1>Спасибо за отправку формы!</h1> </body> </html>
Результат:
Больше реальных примеров использования модели MVC на ASP.NET вы сможете увидеть и попробовать написать самостоятельно на курсе C# Advanced от Hillel.
Cинтаксис Razor впервые появился в ASP.NET MVC 3 и с тех пор стал основным синтаксисом для создания представлений в ASP.NET. Представления с использованием Razor должны выглядеть как HTML-страницы, но с возможностью добавлять динамические элементы (циклы, условные выражения и т.д).
Razor позволяет разработчикам легко создавать HTML-страницы, используя C# или VB.NET, и добавлять логику на стороне сервера в представлениях.
Пример создания HTML-страницы с использованием Razor:
<!DOCTYPE html> <html> <head> <title>Пример Razor-страницы</title> </head> <body> @if (DateTime.Now.Hour < 12) { <p>Доброе утро!</p> } else { <p>Добрый день!</p> } </body> </html>
В этом примере кода условное выражение @if
используется для вывода сообщения «Доброе утро!» или «Добрый день!», в зависимости от текущего времени. Код C# расположен внутри блока @if
и автоматически интерпретируется и преобразуется в соответствующий HTML-код.
Рассмотрим пример, где создается класс MyModel
, который содержит метод GetData
для выполнения запроса к базе данных и получения данных из столбца ColumnName
таблицы MyTable
. Для подключения к базе данных используется класс SqlConnection
из пространства имен System.Data.SqlClient
.
Следующий код на C# демонстрирует, как ASP.NET позволяет легко подключаться к базам данных и работать с ними в коде приложения:
using System.Data.SqlClient; namespace MyWebApp.Models { public class MyModel { private readonly string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;"; public string GetData() { string result = ""; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string query = "SELECT * FROM MyTable"; using (SqlCommand command = new SqlCommand(query, connection)) { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { result += reader["ColumnName"].ToString() + "\n"; } } } } return result; } } }
Скорость работы ASP.NET зависит от ряда факторов. Среди них конкретная реализация приложения, конфигурация сервера, размер базы данных, объем трафика и т. д. При этом на сегодняшний день ASP.NET Core позиционируется как один из самых быстрых веб-фреймворков.
За счет чего это происходит?
С помощью ASP.NET создают разные веб-приложения и сервисы, включая:
Приходите на курс C# Advanced від Hillel, чтобы научиться разрабатывать все виды программ на ASP.NET.
У ASP.NET есть такие основные достоинства:
Но у ASP.NET есть и слабые стороны.
Самый очевидный минус платформы — сложность в использовании. Привычный подход, когда создается файл index.html, затем открывается в браузере и мгновенно отображается готовый результат в .NET не работает.
ASP.NET — это серверная технология, которая генерирует HTML-страницы на стороне сервера, а не клиента.
Поэтому ASP.NET сначала обрабатывает запросы от клиента, потом генерирует страницу на стороне сервера, и только затем отправляет ее клиенту в виде HTML-кода.
Высокий порог входа для работы с ASP.NET может стать настоящей проблемой для новичков, от которых требуется знание языка программирования C# или VB.NET и понимание принципов работы веб-приложений. Но с помошью менторов на курсе C# Basic от Hillel вы сможете освоить технологию гораздо быстрее.
Некоторая избыточность языка C# только усложнит процесс изучения технологии. Номинальная система типов в C# может иногда приводить к тому, что нужно писать больше кода, чем в динамических языках программирования, где система типов структурная.
С другой стороны именно номинальная система типов обеспечивает более жесткую типизацию. Это помочь предотвратить ошибки в программном коде на ранней стадии разработки.
Созданный проект изначально упорядочен. Его структура показана в окне Solution Explorer (с англ. «обозреватель решений»):
Microsoft.AspNetCore.Mvc.Analyzers.dll
). В эту папку можно самостоятельно добавлять библиотеки, повышая функциональность веб-приложения.{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:8645", "sslPort": 44311 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "mytest": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
Код файла launchSettings.json описывает локальный сервер и содержит номер порта для работы сайта. Если запустить проект с помощью кнопки IIS Express, откроется пустая тестовая страница в браузере по адресу, прописанному в этом коде.
{ "Logging": { "LogLevel": { "Default": "Debug", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }
program.cs
. Любое приложение C# должно иметь точку входа main
и, если мы раскроем папку класса, то найдем как раз эту команду. Код этого файла по умолчанию выглядит так:using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace mytest { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); } }
С функции main
начинается запуск нашего приложения, срабатывает функция CreateWebHostBuilder
, создающая сам веб-хост, запускающая все классы и контроллеры проекта.
Startup.cs
служит для дополнительных настроек, таких как, например, отслеживания URL-адресов. Пока вы работаете в режиме отладки, функция IsDevelopment
будет возвращать значение true
, благодаря чему будут отображаться все ошибки проекта:using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace mytest { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } } }
Когда ваш сайт будет готов к публикации, нужно изменить его свойства и включить другой режим, например, Production. Для этого в окне Explorer Solution выделите основную папку и нажмите ALT+Enter.
Выделите раздел Debug и в разделе переменных окружения (ASPNETCORE_ENVIRONMENT
) измените значение Development на Production. В этом случае функция IsDevelopment
будет возвращать значение false
и результатом возможной ошибки будет страница 404.
ASP.NET – мощный и гибкий фреймворк для создания веб-приложений и сервисов, который обладает высокой производительностью.
Благодаря различным моделям разработки, программисты могут выбрать оптимальный подход для своих проектов и решать любые поставленные задачи, создавая масштабируемые и высокопроизводительные веб-приложения.
При этом использование платформы ASP.NET может быть сопряжено с рядом трудностей. Например, необходимо уверенное знание C#. Это основной язык для разработки на платформе .NET, и его использование позволяет получить доступ к большинству возможностей .NET Framework и .NET Core.
Изучить и усовершенствовать знания C# вы можете на курсах от Hillel: C# Basic и C# Advanced.
Также для работы с технологией необходимо:
В заключение мы рекомендуем вам ознакомиться с курсом по ASP.NET Core, где вас научат быстро и просто делать веб-приложения, а также использовать инструментарий платформы:
А если хотите пойти дальше и писать не только функционирующий, но и чистый и продуктивный код, посетите курс по алгоритмам и структурам данных от robot_dreams. Обучение стартует уже в апреле 2023 года.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…