Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен. Жанр: Программирование год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:
class="p1">      options.JsonSerializerOptions.WriteIndented = true;

    });

}

Добавьте в файл Startup.cs перечисленные ниже операторы using:

using AutoLot.Dal.EfStructures;

using AutoLot.Dal.Initialization;

using AutoLot.Dal.Repos;

using AutoLot.Dal.Repos.Interfaces;

using Microsoft.EntityFrameworkCore;

Службам API необходим доступ к ApplicationDbContext и хранилищам внутри уровня доступа к данным. Существует встроенная поддержка для добавления EF Core в приложения ASP.NET Core. Добавьте следующий код в метод ConfigureServices() класса Startup:

var connectionString = Configuration.GetConnectionString("AutoLot");

services.AddDbContextPool<ApplicationDbContext>(

  options => options.UseSqlServer(connectionString,

  sqlOptions => sqlOptions.EnableRetryOnFailure()));

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

Теперь необходимо добавить хранилища в контейнер DI. Вставьте в метод ConfigureServices() приведенный далее код после кода для конфигурирования ApplicationDbContext:

services.AddScoped<ICarRepo, CarRepo>();

services.AddScoped<ICreditRiskRepo, CreditRiskRepo>();

services.AddScoped<ICustomerRepo, CustomerRepo>();

services.AddScoped<IMakeRepo, MakeRepo>();

services.AddScoped<IOrderRepo, OrderRepo>();

Добавление строки подключения к настройкам приложения

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

{

  "Logging": {

    "LogLevel": {

      "Default": "Information",

      "Microsoft": "Warning",

      "Microsoft.Hosting.Lifetime": "Information"

    }

  },

  "ConnectionStrings": {

    "AutoLot": "Server=.,5433;Database=AutoLotFinal;

    User ID=sa;Password=P@ssw0rd;"

  }

}

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

{

  "ConnectionStrings": {

    "AutoLot": "ITSASECRET"

  }

}

Это предохраняет реальную строку подключения от системы управления версиями и делает возможным замену маркера (ITSASECRET) в течение процесса разработки.

AutoLot.Mvc

Метод ConfigureServices() для веб-приложений MVC добавляет базовые службы для приложений API и поддержку визуализации представлений. Вместо вызова AddControllers() в приложениях MVC вызывается AddControllersWithViews():

public void ConfigureServices(IServiceCollection services)

{

  services.AddControllersWithViews();

}

Добавьте в файл Startup.es показанные ниже операторы using:

using AutoLot.Dal.EfStructures;

using AutoLot.Dal.Initialization;

using AutoLot.Dal.Repos;

using AutoLot.Dal.Repos.Interfaces;

using Microsoft.EntityFrameworkCore;

Веб-приложение также должно использовать уровень доступа к данным. Добавьте в метод ConfigureServices() класса Startup следующий код:

var connectionString = Configuration.GetConnectionString("AutoLot");

services.AddDbContextPool<ApplicationDbContext>(

  options => options.UseSqlServer(connectionString,

  sqlOptions => sqlOptions.EnableRetryOnFailure()));

services.AddScoped<ICarRepo, CarRepo>();

services.AddScoped<ICreditRiskRepo, CreditRiskRepo>();

services.AddScoped<ICustomerRepo, CustomerRepo>();

services.AddScoped<IMakeRepo, MakeRepo>();

services.AddScoped<IOrderRepo, OrderRepo>();

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

Добавление строки подключения к настройкам приложения

Модифицируйте файл appsettings.development.json, как показано ниже:

{

  "Logging": {

    "LogLevel": {

      "Default": "Information",

      "Microsoft": "Warning",

      "Microsoft.Hosting.Lifetime": "Information"

    }

  },

  "ConnectionStrings": {

    "AutoLot": "Server=.,5433;Database=AutoLotFinal;

    User ID=sa;Password=P@ssw0rd;"

  }

}

Метод Configure()

Метод Configure() применяется для настройки приложения на реагирование на запросы HTTP. Данный метод выполняется после метода ConfigureServices(), т.е. все, что добавлено в контейнер DI, также может быть внедрено в Configure(). Существуют различия в том, как приложения API и MVC конфигурируются для обработки запросов и ответов HTTP в конвейере.

AutoLot.Api

Внутри стандартного шаблона выполняется проверка среды, и если она установлена в Development (среда разработки), тогда в конвейер обработки добавляется промежуточное ПО UseDeveloperExceptionPage(), предоставляющее отладочную информацию, которую вы вряд ли захотите отображать в производственной среде. Далее производится вызов UseHttpsRedirection() для перенаправления всего трафика на HTTPS (вместо HTTP). Затем добавляются вызовы арр.UseRouting(), арр.UseAuthorization() и арр.UseEndpoints(). Вот полный код метода:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

{

  if (env.IsDevelopment())

  {

    // Если среда разработки, тогда отображать отладочную информацию.

    app.UseDeveloperExceptionPage();

    // Первоначальный код.

    app.UseSwagger();

    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json",

      "AutoLot.Api v1"));

  }

  // Перенаправить трафик HTTP на HTTPS.

  app.UseHttpsRedirection();

  // Включить маршрутизацию.

  app.UseRouting();

  // Включить проверки авторизации.

  app.UseAuthorization();

  // Включить маршрутизацию с использованием конечных точек.

  // Использовать для контроллеров маршрутизацию с помощью атрибутов.

  app.UseEndpoints(endpoints =>

  {

    endpoints.MapControllers();

  });

}

Кроме того, когда приложение запускается в среде разработки, необходимо инициализировать базу данных. Добавьте в метод Configure() параметр типа ApplicationDbContext и вызовите метод InitializeData() из AutoLot.Dal.

Ниже показан модифицированный код:

public void Configure(

  IApplicationBuilder app,

  IWebHostEnvironment env,

  ApplicationDbContext context)

{

  if (env.IsDevelopment())

  {

    // Если среда разработки, тогда отображать отладочную информацию.

    app.UseDeveloperExceptionPage();

    // Инициализировать базу данных.

   if (Configuration.GetValue<bool>("RebuildDataBase"))

    {

      SampleDataInitializer.InitializeData(context);

    }

   }

  ...

}

Обновите файл appsettings.development.json с учетом свойства RebuildDataBase (пока что установив его в false):

{

  "Logging": {

    "LogLevel": {

      "Default": "Information",

      "Microsoft": "Warning",

      "Microsoft.Hosting.Lifetime": "Information"

    }

  },

  "RebuildDataBase": false,

  "ConnectionStrings": {

    "AutoLot": "Server=db;Database=AutoLotPresentation;

    User ID=sa;Password=P@ssw0rd;"

  }

}

AutoLot.Mvc

Метод Configure() для веб-приложений немного сложнее, чем его аналог для API. Ниже приведен полный код метода с последующим обсуждением:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

{

Перейти на страницу:

Эндрю Троелсен читать все книги автора по порядку

Эндрю Троелсен - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Эндрю Троелсен. Читайте комментарии и мнения людей о произведении.


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

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*