Учебное пособие по ASP.NET Core

Учебное пособие по ASP.NET Core Программирование и разработка

Учебное пособие по ASP.NET Core

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

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

Сегодня мы поможем вам начать работу с ASP.NETCore, изучив его структуру MVC, и поможем создать ваше первое ASP.NETвеб-приложение Core!

Что такое.NET Core?

.NET Core (часто сокращается до «.NET») — это программный фреймворк C # с открытым исходным кодом, созданный Microsoft в 2016 году. Он является преемником.NET Framework и отличается кросс-платформенными возможностями. Хотя.NET Core ещё не имеет доступа к такому количеству библиотек, как.NET Framework, он по-прежнему регулярно обновляется и, по прогнозам, будет продолжать обновления и в будущем. Эти две технологии недавно были объединены в ноябре 2020 года в новую платформу под названием.NET 5.

ASP.NET(Active Server Pages) расширяет.NET Core инструментами для создания серверных веб-приложений. Он использует архитектуру MVC для создания своего пользовательского интерфейса и веб-стандартов HTML, CSS и JavaScript для генерации поведения. Он включает обширную поддержку веб-API, облачных веб-приложений и масштабируемость.

Он также построен с нуля для работы с популярными инструментами, такими как Docker, Visual Studio, Kestrel, jQuery и другими. .NET часто используется с Entity Framework Core, средой объектно-реляционного сопоставления, полезной для работы с базами данных.

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

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

.NET Core включает:

  • Кроссплатформенная поддержка различных компьютерных операционных систем, мобильных устройств и даже игровых консолей.
  • Поддержка языков программирования C #, F # и Visual Basic.
  • Базовые библиотеки для работы со строками, датами, файлами / вводом-выводом и т. Д.
  • Редакторы и инструменты для Windows, Linux, macOS и Docker

ASP.NET добавляет:

  • Поддержка обработки веб-запросов на C # или F #.
  • Синтаксис шаблонов страниц Razor для создания динамических веб-страниц с использованием C #.
  • Библиотеки для распространённых веб-шаблонов, таких как MVC.
  • Система аутентификации с библиотеками, базой данных и шаблонными страницами для обработки входов в систему с многофакторной аутентификацией и внешней.
  • аутентификацией с третьими сторонами, такими как Google, Twitter, Facebook и т.д.
  • Расширения редактора, которые реализуют подсветку синтаксиса, автозавершение кода и другие функции, настроенные для веб-разработки.

ASP.NET Структура проекта MVC

Многие разработчики предпочитают завершать свои ASP.NETосновные проекты в структуре MVC из-за её широкой популярности.

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

NET Структура проекта MVC

Модели

/Models/»M» в MVC. /Models/Папка содержит все классы моделей. По умолчанию в этой папке находится только ErrorViewModel.cs файл, который является файлом по умолчанию, который обрабатывает исключения.

Классы модели позволяют отображать данные в вашей базе данных. Класс модели обычно состоит из атрибутов вместе с их «получателями» и «установщиками». Атрибуты — это, по сути, данные, для которых должен иметь значение любой экземпляр этого класса модели.

Количество классов моделей и типов атрибутов в этих классах моделей зависит от требований вашего приложения. Например, приложение, которое управляет данными сотрудника может иметь класс модели Employeeс атрибутами name, department и rankпотому, что эти атрибуты применяются ко всем сотрудникам.

public class User
{
    public int ID { get; set; } //ID attributes are recognized as keys for the object by Entity
    public string Name { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string PhoneNumber { get; set; }
    public bool IsActive { get; set; }
}

Контроллеры

/Controllers/»C» в MVC. /Controllers/Папка состоит из всех ваших классов контроллеров. По умолчанию в нём есть HomeController.cs файл. В классах контроллеров находится логика вашего приложения. .NET требует, чтобы каждый класс контроллера реализовал IController интерфейс, поскольку он содержит существенную поддержку представлений.

public class UsersController : Controller

В контроллерах также реализована инъекция зависимостей, которая устанавливает соединение между контроллерами и контекстом вашей базы данных. Это позволяет вам через use _contextвесь класс контроллера получить доступ к вашей базе данных без необходимости инициализировать какой-либо объект.

Методы внутри контроллера называются «методами действия», поскольку они возвращают «результат действия». Имя метода действия используется для сопоставления его конечной точки URL. Например, если имя контроллера — UserController, а имя метода действия — Details, то существует конечная точка URL-адреса, к /Users/Details/которой можно получить доступ, и которая запустит метод действия Details.

Читайте также:  5 лучших IDE для программирования на С и С++

Эта возможность доступа к разным страницам под одним и тем же доменным именем называется маршрутизацией. Входящие HTTP-запросы сопоставляются с соответствующей конечной точкой URL (часто это метод действия), которая затем возвращает ваш запрограммированный ответ. Как и в случае с маршрутами в компьютерных файловых системах, разные части маршрута выделяются косой чертой:Domain/Model/method

Фреймворк извлекает маршрут из имени контроллера. Например, если имя контроллера UsersController, ваш маршрут будет /Users. URL-адрес формы Controller1/Method1соответствует методу, указанному Method1в Controller1 class. Если имя метода класса Users SignUp(), то маршрут будет /Users/SignUp/. Метод действия по умолчанию, срабатывающий, когда пользователь обращается к URL-адресу контроллера, — Index(). Это выполняет поведение, заданное в Index.cshtmlфайле в папке представлений.

// GET: Users
public async Task<IActionResult> Index()
{
    return View(await _context.Users.ToListAsync());
}

Взгляды

/Views/- это буква «V» в MVC. /Views/Папка содержит все файлы, которые будут использоваться для отображения пользовательского интерфейса к пользователю, что они могут взаимодействовать. По умолчанию в этой папке есть ещё две папки: /Home/и /Shared/. Оба Index.cshtmlи _Layout.cshtmlпапки в основном отвечают за ваш вывод.

Представления позволяют пользователям видеть ваши данные в удобном для пользователя формате. Они несут ответственность за всё, что ваш конечный пользователь видит на своём экране. Представления ASP.NETнаписаны на языке гипертекстовой разметки (HTML и CSS) вместе с некоторым дополнительным синтаксисом для представления динамически изменяющихся данных.

Созданные представления соответствуют методам действий вашего контроллера. Например, у Index()метода есть вызываемое отображаемое представление, Index.cshtmlа у Create()метода есть вызываемое представление Create.cshtmlи так далее. Файлы в папке Views, которые используют методы или данные из моделей, должны иметь объявление модели в начале, которое позволяет вам получить доступ к атрибутам указанного класса модели.

@model IEnumerable<<t>People.Models.User</t>> 

В этом случае вы можете читать и извлекать данные и атрибуты из Userклассов. Самый простой запрос просмотра — это запрос атрибута. Это позволяет вам считывать значение атрибута из парного класса модели.

@Html.DisplayNameFor(model => model.Name)

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

@{
    ViewData["Title"] = "Home Page";
}
<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

Характеристики

В /Properties/папке находится launchSettings.json файл. Этот файл сообщает платформе, как запустить это приложение.

Он передаёт информацию, описывая, какие команды следует запускать, переменные среды, которые необходимо установить, и приложения (например, браузер), запускаемые вместе с приложением. .NET Core использует эту информацию не только для запуска приложения, но и для отладки.

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:1779",
      "sslPort": 44366
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "People": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

/Startup.cs и /Program.cs

Здесь начинается ваше приложение. .NET Core — это консольное приложение, настроенное для запуска веб-приложения.

Program.cs содержит ваш main метод и Startup.cs все ваши начальные конфигурации. Эти конфигурации по сути представляют собой инструкции о том, как вы хотите, чтобы приложение запускалось и выполнялось.

  • Program.cs
// Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace People
{
    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>();
                });
    }
}
  • Startup.cs
// Startup.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace People
{
    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?}»);
            });
        }
    }
}

appsettings.json

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

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

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

.csprof

.csprof это файл XML. Когда создаётся новый проект, вы получаете файл с тем же именем, которое вы задали для имени проекта, и его расширением.csprof. Этот файл представляет собой файл проекта C #.

Вот пример:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
</Project>

Архитектуры, отличные от MVC

Razor Pages

Razor Pages — это формат веб-разработки по умолчанию в ASP.NETCore. Это страничная модель, встроенная в ASP.NETCore MVC. Он имеет функции, аналогичные MVC, но имеет собственный синтаксис и менее загромождённый макет.

Читайте также:  Пример рекурсии Python

В стиле MVC части вашего приложения разбиты на папки для контроллера, модели и представления. В структуре Razor Pages нет отдельных папок, а вместо этого используется одна папка «Pages» в качестве папки маршрута для всех частей.

Razor Pages

Вместо отдельного контроллера с действиями и каждым действием, представляющим представление, Razor Pages представляет собой компактную версию стиля MVC, которая прикрепляет контроллер или модель представления непосредственно к странице.

Репозиторий

Репозитории — это особый тип класса, используемый для добавления уровня абстракции между доступом к данным и вашими контроллерами. Он не используется в программах в формате MVC, но важен для других типов ASP.NET основных приложений, таких как приложения Razor Pages.

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

Сначала вы создаёте интерфейс со всеми объявлениями функций, отвечающих за выполнение операций CRUD. Затем вы создаёте класс репозитория и вводите контекст своей базы данных. Эти классы репозитория реализуют функции интерфейса и предоставляют свою логику для обработки операций. Затем один из этих репозиториев внедряется в ваш контроллер для обеспечения функциональности, поэтому вам не нужно вводить базу данных непосредственно в контроллеры.

public interface IUserRepo
{
    User CreateUser(User user);
    IEnumerable<User> GetAllUsers();
    User GetUserById(int id);
    User UpdateUser(User user);
    User DeleteUser(int id);
}

Лучше всего называть все интерфейсы C # префиксом «I», чтобы сразу обозначить статус их интерфейса.

Веб-API JSON

JSON — это аббревиатура от JavaScript Object Notation. Это формат файла, в котором объекты данных хранятся в удобочитаемой форме. Это самый популярный формат, когда дело касается создания и использования API. Многие приложения разрабатываются ASP.NETна внутренней стороне и реализуются во внешней среде, такой как React, Blazor, Bootstrap или Angular, с использованием веб-API JSON. Вот пример файла JSON:

[
    {
        "id":1,
        "name":"James Bond",
        "email":"James@Bond.co.uk",
        "password":"password",
        "phoneNumber":0070000000
    }
]

Квадратные скобки [ ]обозначают список или массив объектов. Фигурные скобки { }представляют объект JSON. Внутри этого объекта есть пары ключ-значение с разными типами данных, ключ «имя» со значением «Джеймс Бонд».

JSON обрабатываются с помощью набора HTTP-методов, подобных CRUD. Каждый HTTP-запрос использует определённый метод. Метод по умолчанию GET, но вы можете использовать POST, PUT или DELETE если вы хотите различные модели поведения.

ПОЛУЧАТЬ

GET Метод используется для извлечения ресурса от сервера к клиенту. В случае веб-API JSON ресурс может быть объектом JSON или списком объектов JSON.

GET /index.html

ПОЧТОВЫЙ

POST Метод используется для передачи данных от клиента к серверу. Затем сервер сохраняет данные. В случае веб-API JSON это может быть объект JSON или список объектов JSON.

POST /test

PUT / PATCH

Оба PUTи PATCH используются для изменения данных. Однако между ними есть небольшая разница. В PUT, весь объект заменяется новым объектом. В то время как в PATCH заменяется только изменённая часть объекта. Это похоже на Update метод в CRUD.

PUT /new.html HTTP/1.1
PATCH /file.txt HTTP/1.1

УДАЛИТЬ

DELETE Метод используется, чтобы послать запрос от клиента к серверу или удалить запись. Сервер принимает запрос и соответственно удаляет запись.

DELETE /file.html HTTP/1.1

Привет, мир: как создать ASP.NET веб-приложение

Теперь давайте возьмёмся за дело и напишем ваш первый Hello-World. В этом примере мы будем использовать Razor Pages и .Net Core CLI, поскольку это инструменты по умолчанию. Вам также понадобится .NET Core 3.1 SDK или более поздняя версия, чтобы всё работало правильно.

Создать проект

Откройте командную оболочку и введите следующую команду:

dotnet new webapp -o aspnetcoreapp

Это создаст новое веб-приложение, указанное webapp параметром.

-o aspnetcoreapp Параметр создаёт каталог с именем aspnetcoreapp со всеми исходными файлами для нашего приложения.

Доверьтесь сертификату разработки

Теперь введите:

dotnet dev-certs https --trust

Это заставит ваш компьютер доверять сертификату разработки HTTPS. Без этого шага последующие команды будут заблокированы.

Запустите приложение

Далее введите:

cd aspnetcoreapp
dotnet watch run

Это выбирает проект веб-приложения, созданный на шаге 1, а затем сообщает.NET запустить его.

После того, как команда оболочка говорит вам, она начала, скопируйте следующее в панель браузера: https://localhost:5001.

Редактировать страницу Razor

Откройте Pages/Index.cshtml и измените текст, чтобы сказать:

    <p>Hello, world! The time on the server is @DateTime.Now</p>

После этого ваш файл должен выглядеть так:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}
<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Hello, world! The time on the server is @DateTime.Now</p>
</div>

Как только вы закончите, сохраните файл и обновите браузер с тем же localhostIP-адресом. Вы увидите приятное приветственное сообщение!

Этот шаг аналогичен подходу MVC или Razor Page.

 

Оцените статью
bestprogrammer.ru
Добавить комментарий