middleware, module, handler
- ASP.NET MVC
HTTP 모듈 및 handler는 ASP.NET architecture의 필수부분이다.
- ASP.NET Core
Request pipeline을 구성한다.
HttpContext 액세스
HttpContext.Current 정적 호출을 사용하는 대신, Middleware의 메서드에 매게변수로 제공하고, 서비스에는 IHttpContextAccessor를 사용한다.
configuration
ASP.NET과 ASP.NET Core 사이에 configureation 값을 저장하고 읽는 방법이 크게 변경되었다.
- ASP.NET MVC
web.config파일을 사용한다. 대부분의 app은 appSettings, connectionStrings element에 설정값을 저장한다. 설정값은 System.Configuration.ConfigurationManager class를 사용해서 접근한다. 따라서 대부분의 app들은 setting값에 직접 접근한다.
string connectionString =
ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
- ASP.NET Core
대부분의 앱들은 템플릿에서 제공하는 파일을 사용한다. 기본세팅은 appsettings.json, appsettings.Development.json과 같은 JSON 포맷 파일을 사용한다. 기본 구성 시스템은 동일한 이름의 환경설정값으로 모든 파일기본 세팅값을 override할 수 있다. 따라서 배포 시, 실수로 중요한 prodiction 구성세팅값을 덮어쓸 걱정이 없다.
configuration값 접근은 여러가지 방법이 있다. .NET Core에 내장된 DI 때문에, 보통 interface를 통해 class에 주입되어 사용한다. IConfiguration interface를 전달할 수 있지만, 일반적으로 options pattern을 사용하여 필요한 설정만 세팅을 전달하는 것이 좋다.
//Razor 페이지로 IConfiguration 전달하고 구성 설정에 접근
using Microsoft.Extensions.Configuration;
public class TestModel : PageModel
{
private readonly IConfiguration _configuration;
public TestModel(IConfiguration configuration)
{
_configuration= configuration;
}
public ContentResult OnGet()
{
var myKeyValue = _configuration["MyKey"];
// ...
}
}
// 옵션 패턴을 사용하여 접근, 필요한 설정을 구체적으로 입력
public class PositionOptions
{
public const string Position = nameof(Position);
public string Title { get; set; }
public string Name { get; set; }
}
public class Test2Model : PageModel
{
private readonly PositionOptions _options;
public Test2Model(IOptions<PositionOptions> options)
{
_options = options.Value;
}
public ContentResult OnGet()
{
return Content($"Title: {_options.Title}\nName: {_options.Name}");
}
}
Program.cs파일에 옵션 유형을 구성해야 한다.
// required in ConfigureServices
services.Configure<PositionOptions>(Configuration.GetSection(PositionOptions.Position));
'ASP.NET Core' 카테고리의 다른 글
ASP.NET MVC vs ASP.NET Core] Logging 차이 (0) | 2023.02.15 |
---|---|
ASP.NET MVC vs ASP.NET Core] Routing 차이 (0) | 2023.02.09 |
ASP.NET MVC vs ASP.NET Core] static files, DI 차이 (0) | 2023.02.07 |
ASP.NET MVC vs ASP.NET Core] startup, host 차이점 (0) | 2023.02.07 |
.NET CLI] 사용법 - 빌드, 실행, 게시(self-contained, framework-dependent) (3) (0) | 2022.06.24 |
댓글