재우니의 블로그

 

 

VISUAL STUDIO CODE 로 클래스라이브러리 및 ASP.NET CORE  8  MVC 구축하기

 

 

1> 솔루션 파일 생성하기

PS C:\Users\lucks> cd D:\SourceCode\IntraSolution
PS D:\SourceCode\IntraSolution> dotnet new sln
"솔루션 파일" 템플릿이 성공적으로 생성되었습니다.

 

 

2> 클래스 라이브러리 생성하기

PS D:\SourceCode\IntraSolution> dotnet new classlib -o Intra.Application
"클래스 라이브러리" 템플릿이 성공적으로 생성되었습니다.

PS D:\SourceCode\IntraSolution> dotnet new classlib -o Intra.Core
"클래스 라이브러리" 템플릿이 성공적으로 생성되었습니다.

PS D:\SourceCode\IntraSolution> dotnet new classlib -o Intra.Infrastructure
"클래스 라이브러리" 템플릿이 성공적으로 생성되었습니다.

 

 

3> sln 솔루션 파일에 클래스라이브러리 추가하기

 

PS D:\SourceCode\IntraSolution> dotnet sln add Intra.Application/Intra.Application.csproj
'Intra.Application\Intra.Application.csproj' 프로젝트가 솔루션에 추가되었습니다.

PS D:\SourceCode\IntraSolution> dotnet sln add Intra.Core/Intra.Core.csproj
'Intra.Core\Intra.Core.csproj' 프로젝트가 솔루션에 추가되었습니다.

PS D:\SourceCode\IntraSolution> dotnet sln add Intra.Infrastructure/Intra.Infrastructure.csproj
'Intra.Infrastructure\Intra.Infrastructure.csproj' 프로젝트가 솔루션에 추가되었습니다.

 

 

4> asp.net core 구축하기

 

PS D:\SourceCode\IntraSolution> dotnet new mvc -o Intra.Web
"ASP.NET Core 웹앱(Model-View-Controller)" 템플릿이 성공적으로 생성되었습니다.

 

 

5> asp.net core 의 sln 에 추가하기

 

PS D:\SourceCode\IntraSolution> dotnet sln add Intra.Web/Intra.Web.csproj
'Intra.Web\Intra.Web.csproj' 프로젝트가 솔루션에 추가되었습니다.

 

 

6> asp.net core (Intra.Web) 에 클래스 라이브러리 reference 추가하기

 

PS D:\SourceCode\IntraSolution> dotnet add Intra.Web/Intra.Web.csproj reference Intra.Application/Intra.Application.csproj
프로젝트에 '..\Intra.Application\Intra.Application.csproj' 참조가 추가되었습니다.

PS D:\SourceCode\IntraSolution> dotnet add Intra.Web/Intra.Web.csproj reference Intra.Core/Intra.Core.csproj
프로젝트에 '..\Intra.Core\Intra.Core.csproj' 참조가 추가되었습니다.

PS D:\SourceCode\IntraSolution> dotnet add Intra.Web/Intra.Web.csproj reference Intra.Infrastructure/Intra.Infrastructure.csproj
프로젝트에 '..\Intra.Infrastructure\Intra.Infrastructure.csproj' 참조가 추가되었습니다.

 

 

7> sln 빌드 하기

 

PS D:\SourceCode\IntraSolution> dotnet build

msbuild 버전 17.9.6+a4ecab324(.NET용)
  복원할 프로젝트를 확인하는 중...
  복원할 모든 프로젝트가 최신 상태입니다.
  Intra.Core -> D:\SourceCode\IntraSolution\Intra.Core\bin\Debug\net8.0\Intra.Core.dll
  Intra.Infrastructure -> D:\SourceCode\IntraSolution\Intra.Infrastructure\bin\Debug\net8.0\Intr
  a.Infrastructure.dll
  Intra.Application -> D:\SourceCode\IntraSolution\Intra.Application\bin\Debug\net8.0\Intra.Appl
  ication.dll
  Intra.Web -> D:\SourceCode\IntraSolution\Intra.Web\bin\Debug\net8.0\Intra.Web.dll

 

 

8> asp.net core 의 배포하기

 

PS D:\SourceCode\IntraSolution> cd intra.Web
PS D:\SourceCode\IntraSolution\Intra.Web> dotnet publish -c Release -p:UseAppHost=false

msbuild 버전 17.9.6+a4ecab324(.NET용)
  복원할 프로젝트를 확인하는 중...
  복원할 모든 프로젝트가 최신 상태입니다.
  Intra.Application -> D:\SourceCode\IntraSolution\Intra.Application\bin\Release\net8.0\Intra.Ap
  plication.dll
  Intra.Core -> D:\SourceCode\IntraSolution\Intra.Core\bin\Release\net8.0\Intra.Core.dll
  Intra.Infrastructure -> D:\SourceCode\IntraSolution\Intra.Infrastructure\bin\Release\net8.0\In
  tra.Infrastructure.dll
  Intra.Web -> D:\SourceCode\IntraSolution\Intra.Web\bin\Release\net8.0\Intra.Web.dll
  Intra.Web -> D:\SourceCode\IntraSolution\Intra.Web\bin\Release\net8.0\publish\

 

 

9> 배포된 파일은 publish 라는 폴더에 보관되어 있으며, iis 서비스를 할 경우, 웹사이트의 경로 설정 시, publish 폴더에 지정하면 됩니다. 원본 소스에는 web.config 가 없지만, 배포를 하게 되면 자동적으로 생성되는 파일입니다. 용도는 응용 프로그램을 IIS에 배포하고 AspNetCoreModule을 HTTP 처리기로 등록할 때만 사용됩니다.

 

AspNetCoreModule 은 IIS로 들어오는 모든 트래픽을 처리한 다음 트래픽을 ASP.NET Core 애플리케이션으로 전달하는 방법을 아는 역방향 프록시 역할을 합니다. AspNetCoreModule 은 또한 웹 애플리케이션이 실행되고 있는지 확인하고 프로세스 시작을 담당합니다.

 

 

 

<web.config 내부 코드>

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

 

 

 

 

.NET Core Windows Server Hosting Bundle 설치 


애플리케이션을 배포하기 전에 IIS용 .NET Core Hosting Bundle (.NET Core 런타임, 라이브러리 및 IIS 용 ASP.NET Core 모듈)을 설치해야 합니다.

설치 후에는 "net stop was /y" 및 "net start w3svc"를 수행하여 IIS에 대한 모든 변경 사항이 적용되도록 해야 할 수도 있습니다.

 

https://dotnet.microsoft.com/en-us/download/dotnet/8.0

 

 

Kestrel과 IIS

 

Microsoft에서는 ASP.NET Core 호스팅을 위해 IIS를 사용할 것을 권장합니다. IIS는 무엇보다도 추가 수준의 구성 가능성, 관리, 보안 및 로깅( configurability, management, security and logging) 을 제공합니다.

Kestrel과 IIS 에 대한 블로그 게시물을 확인하여 기능 차이점의 전체 매트릭스를 확인하세요. (https://stackify.com/kestrel-web-server-asp-net-core-kestrel-vs-iis/) 이 게시물에서는 Kestrel이 무엇인지, Kestrel 과 IIS가 모두 필요한 이유에 대해 더 자세히 설명합니다.

IIS 사용의 가장 큰 장점 중 하나는 프로세스 관리 입니다 . IIS는 자동으로 앱을 시작 하고 충돌이 발생할 경우 잠재적으로 다시 시작합니다.

 

 

참고 사이트

 

https://stackify.com/how-to-deploy-asp-net-core-to-iis/

https://learn.microsoft.com/en-us/dotnet/core/tutorials/library-with-visual-studio-code?pivots=dotnet-8-0

https://learn.microsoft.com/ko-kr/aspnet/core/fundamentals/?view=aspnetcore-8.0&tabs=windows