제가 ASP.NET의 사용이 필요해서 이제 막 학습을 하고 있습니다.
현재 AWS에서 Windows Server 2022에 RDS에서 별도의 MSSql 서버를 사용중입니다. 검색을 해보니간 MVC 같은 것들처럼 View가 있으면 IIS에 올려서 배포를 하는 것 같던데요. 그런데 View가 없는거면 그냥 비주얼 스튜디오에서 솔루션 빌드 누르면 나오는 exe 파일을 그냥 더블 클릭 실행으로 다른 리눅스 계열 서버나 이런 것처럼 단순히 실행만해서 사용을 할 수 있는건가요? 검색을 해봐도 IIS 관련만 나오고 그래서 직접 해보니 안되긴 하는데, 이게 원래 안되는건지 설정에 문제인지 잘 모르겠어서 여쭤봅니다.
네, 가능합니다.
Kestel 설정만 해준다면 API 로 사용이 가능합니다.
질문자님의 질문과 논외로 Nuget을 통해 특정 라이브러리를 다운받으면 윈도우 서비스에 등록해서도 사용이 가능합니다.
이 사용방법을 응용하여 BMW밋업의 WPF세션에서 공유드릴 예정입니다.
아하, 이 외에도 여러가지 방법이 있었군요.
답변 감사합니다!
뷰가 있던 없던 http를 웹프레임워크를 구현한 콘솔 프로그램(앱)일 뿐입니다.
원도우로 빌드하면 exe가 나오는거고 리눅스/macOS로 빌드하면 유닉스 실행파일이 나올뿐입니다.
정해진 포트를 열고(launch.json에 포트번호등 정의) 요청을 기다릴 뿐이죠.
리눅스서버에서 안될 이유는 서버에 닷넷런타임이 없거나 실행파일을 실행하지 않았거나 포트번호를 잘못찾았거나 방화벽 문제일겁니다.
Asp.Net Core 앱은 뷰가 있든 없든, 크로스 플랫폼 콘솔앱으로, Kestrel 서버를 백그라운드 서비스로 실행하도록 설정됩니다.
내부 망에서 사용하기 위한 목적이면, 이 것을 그대로 사용해도 됩니다.
외부 망에서 사용하기 위한 목적이면, 보통 리버스 프록시 서버를 두는데, 윈도우 운영체제라면, IIS 를 사용하는 것이죠.
Asp.Net Core 는 크로스 플랫폼 앱이기 때문에, 리눅스, 맥에서도 실행 가능하고, 따라서, 그 운영체제에서 사용가능한 서버를 리버스 프록시로 지정할 수 있습니다.
아래 글은 리눅스에서 Ngix 를 설정하는 문서입니다.
Host ASP.NET Core on Linux with Nginx | Microsoft Learn
예전에는 맥에서 Apache 를 설정하는 문서도 있었는데, 없어진 것 같습니다.
프로젝트를 우클릭해서 “게시” 선택, "폴더"에 배포해보시면 파일이 쭈욱 나오는데요.
배포된 파일 중에 exe 와 동일한 파일명의 dll 이 보이실겁니다.
윈도우에서는 exe를 실행하고, 리눅스에서는 “dotnet 파일명.dll” 명령어로 실행하시면 됩니다.
좀 더 고급개념으로 들어가면 리눅스 service를 등록하고, reverse proxy 서버를 앞단에 놓고, environment 를 설정하는 등이 있는데,
특별한 이유가 있지 않는 이상 iis 에서 aspnetcore 서버를 돌리는 경우는 없던거같습니다.
윈도우 서버가 비싸요…
아하, 확실히 윈도우는 라이센스 비용까지 있어서 비싼거 같긴한데요.
c#으로 만든 것을 리눅스로 돌렸을 때에 단점 같은건 없을 가요?
그냥 c#이나 이런게 아무래도 윈도우 특화 언어라는 생각에 그냥 윈도우로 한거여서요. 말씀 하신대로 윈도우로 돌려야할 이유가 딱히 없으면 리눅스로 돌리는게 좋은가요?
윈폼, WPF 와 같은 윈도우 UI를 개발하는게 아닌 aspnetcore 처럼 서버라면 윈도우 서버를 써야할 이유는 없습니다. 윈도우 서버만의 특별한 기능을 이용하는게 아니라면 말이죠.
윈도우 특화 언어라는게 2016년 이전의 닷넷프레임워크 얘기라서 현시점에 통용될 이야기는 아닙니다.
아하, 답변 감사합니다!
위 링크 방식으로 우분투 서버에 nginx로 올려서 테스트해볼 수 있습니다. 실제로 서비스 운영하는데도 큰 문제는 없었습니다.