Asp.net core Web API로 View가 없을 때는 그냥 파일 실행으로 구동이 가능한가요?

제가 ASP.NET의 사용이 필요해서 이제 막 학습을 하고 있습니다.
현재 AWS에서 Windows Server 2022에 RDS에서 별도의 MSSql 서버를 사용중입니다. 검색을 해보니간 MVC 같은 것들처럼 View가 있으면 IIS에 올려서 배포를 하는 것 같던데요. 그런데 View가 없는거면 그냥 비주얼 스튜디오에서 솔루션 빌드 누르면 나오는 exe 파일을 그냥 더블 클릭 실행으로 다른 리눅스 계열 서버나 이런 것처럼 단순히 실행만해서 사용을 할 수 있는건가요? 검색을 해봐도 IIS 관련만 나오고 그래서 직접 해보니 안되긴 하는데, 이게 원래 안되는건지 설정에 문제인지 잘 모르겠어서 여쭤봅니다.

1 Like

네, 가능합니다.

Kestel 설정만 해준다면 API 로 사용이 가능합니다.

질문자님의 질문과 논외로 Nuget을 통해 특정 라이브러리를 다운받으면 윈도우 서비스에 등록해서도 사용이 가능합니다.

이 사용방법을 응용하여 BMW밋업의 WPF세션에서 공유드릴 예정입니다. :slight_smile:

4 Likes

아하, 이 외에도 여러가지 방법이 있었군요.
답변 감사합니다!

1 Like

뷰가 있던 없던 http를 웹프레임워크를 구현한 콘솔 프로그램(앱)일 뿐입니다.

원도우로 빌드하면 exe가 나오는거고 리눅스/macOS로 빌드하면 유닉스 실행파일이 나올뿐입니다.

정해진 포트를 열고(launch.json에 포트번호등 정의) 요청을 기다릴 뿐이죠.

리눅스서버에서 안될 이유는 서버에 닷넷런타임이 없거나 실행파일을 실행하지 않았거나 포트번호를 잘못찾았거나 방화벽 문제일겁니다.

2 Likes

Asp.Net Core 앱은 뷰가 있든 없든, 크로스 플랫폼 콘솔앱으로, Kestrel 서버를 백그라운드 서비스로 실행하도록 설정됩니다.

내부 망에서 사용하기 위한 목적이면, 이 것을 그대로 사용해도 됩니다.

외부 망에서 사용하기 위한 목적이면, 보통 리버스 프록시 서버를 두는데, 윈도우 운영체제라면, IIS 를 사용하는 것이죠.

Asp.Net Core 는 크로스 플랫폼 앱이기 때문에, 리눅스, 맥에서도 실행 가능하고, 따라서, 그 운영체제에서 사용가능한 서버를 리버스 프록시로 지정할 수 있습니다.

아래 글은 리눅스에서 Ngix 를 설정하는 문서입니다.

Host ASP.NET Core on Linux with Nginx | Microsoft Learn

예전에는 맥에서 Apache 를 설정하는 문서도 있었는데, 없어진 것 같습니다.

1 Like

프로젝트를 우클릭해서 “게시” 선택, "폴더"에 배포해보시면 파일이 쭈욱 나오는데요.
배포된 파일 중에 exe 와 동일한 파일명의 dll 이 보이실겁니다.
윈도우에서는 exe를 실행하고, 리눅스에서는 “dotnet 파일명.dll” 명령어로 실행하시면 됩니다.

좀 더 고급개념으로 들어가면 리눅스 service를 등록하고, reverse proxy 서버를 앞단에 놓고, environment 를 설정하는 등이 있는데,
특별한 이유가 있지 않는 이상 iis 에서 aspnetcore 서버를 돌리는 경우는 없던거같습니다.

윈도우 서버가 비싸요…

1 Like

아하, 확실히 윈도우는 라이센스 비용까지 있어서 비싼거 같긴한데요.
c#으로 만든 것을 리눅스로 돌렸을 때에 단점 같은건 없을 가요?
그냥 c#이나 이런게 아무래도 윈도우 특화 언어라는 생각에 그냥 윈도우로 한거여서요. 말씀 하신대로 윈도우로 돌려야할 이유가 딱히 없으면 리눅스로 돌리는게 좋은가요?

윈폼, WPF 와 같은 윈도우 UI를 개발하는게 아닌 aspnetcore 처럼 서버라면 윈도우 서버를 써야할 이유는 없습니다. 윈도우 서버만의 특별한 기능을 이용하는게 아니라면 말이죠.
윈도우 특화 언어라는게 2016년 이전의 닷넷프레임워크 얘기라서 현시점에 통용될 이야기는 아닙니다.

2 Likes

아하, 답변 감사합니다!

위 링크 방식으로 우분투 서버에 nginx로 올려서 테스트해볼 수 있습니다. 실제로 서비스 운영하는데도 큰 문제는 없었습니다.

1 Like