ASP.NET Core ์น ์์ฉํ๋ก๊ทธ๋จ์ ์์ฑํ ๋, ์น ์์ฉํ๋ก๊ทธ๋จ ํ๋ก์ ํธ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ค๋ฅธ ํ๋ก์ ํธ๋ก ๋ถ๋ฆฌํ๊ธฐ๋ฅผ ์ํ๋ฉด ์ด๋ฐ ๋ฐฉ๋ฒ์ด ๊ฒํ ํด ๋ณด์ญ์์ค.
์ ๊ท ํ๋ก์ ํธ ์์ฑ
์ปจํธ๋กค๋ฌ๋ฅผ ๋ถ๋ฆฌํ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
.NET Standard ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ ํ๋ฆฟ ์ฌ์ฉ
$ mkdir Blog.Backend.Api.Account
$ cd Blog.Backend.Api.Account
$ dotnet new classlib
ํ์ํ Nuget ํจํค์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค.
$ dotnet add package Microsoft.AspNetCore.Mvc --version 2.2.0
$ dotnet add package Microsoft.Extensions.Logging --version 2.2.0
์์ : porject file
์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ ์๋ก ์ถ๊ฐํ ํ๋ก์ ํธ๋ก ๋ณต์ฌํ๊ณ , ๋ค์์คํ์ด์ค๋ฅผ ์กฐ์ ํฉ๋๋ค.
IServiceCollection ์ ํ์ฅ ๋ฉ์๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
public static class ServicesConfigureExtesion
{
public static IServiceCollection AddAccountApiController(this IServiceCollection services)
{
// ์ฎ๊ธด ์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ IoC ์ปจํ
์ด๋์ ๋ฑ๋กํฉ๋๋ค.
services.AddTransient<UserController>();
services.AddTransient<AccountController>();
return services;
}
public static IMvcBuilder AddAccountApiController(this IMvcBuilder builder)
{
var currentAssembly = typeof(ServicesConfigureExtesion).GetTypeInfo().Assembly;
builder
.AddApplicationPart(currentAssembly)
;
return builder;
}
}
์น ์์ฉํ๋ก๊ทธ๋จ ์ฝ๋ ๋ณ๊ฒฝ
๋ค๋ฅธ ํ๋ก์ ํธ๋ก ์ฎ๊ธด ์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ ์น ์์ฉํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ก์ ํธ ์ฐธ์กฐ๋ฅผ ์ถ๊ฐํ๊ณ , Startup ํด๋์ค์ ConfigureServices ๋ฉ์๋์ ์๋ก์ด ํ๋ก์ ํธ์์ ์ ์ํ IServiceCollection ํ์ฅ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
public void ConfigureServices(IServiceCollection services)
{
/* ์ค๋ต */
services
/* IServiceCollection ํ์ฅ๋ฉ์๋ */
/* IoC ์ปจํ
์ด๋์ ํ์
์ ๋ฑ๋ก */
.AddAccountApiController()
.AddMvc()
/* IMvcBuilder ํ์ฅ๋ฉ์๋ */
/* ๋ค๋ฅธ ์ด์
๋ธ๋ฆฌ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ */
.AddAccountApiController()
.SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2)
.AddControllersAsServices()
;
/* ์ค๋ต */
}
์์ : Startup.cs ์์
์ถ๊ฐ
๋ผ์ฐํธ ๊ตฌ์ฑ์ด ๋ณ๊ฒฝ๋์ด์ผ ํ๋ฉด Startup ํด๋์ค์ Configure ๋ฉ์๋์์ ๋ผ์ฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์์ : Startup.cs ์์