일단 클라이언트 피씨에 윈도우서비스가 설치되있다는 가정하에 해당 서비스는
http통신이 가능한 port가 열려있다고 가정합니다 ;
그리고 웹서버에 배포된 blazor로 해당 피씨마다 깔린 localhost port 를 통해서
해당 local pc 리소스에 접근하는 구상을 해보고있는데 가능할까요?
정리하면 개인 pc에 윈도우서비스로 API 서비스를 올려놓고
localhost:192 번 이렇게 접근할수 있고
웹서버에서 blazor wasm 을 내려받아 해당 pc에 로컬 port를 통해 통신하고 개인 pc
리소스에 접그하는구상입니다. 이론상으로 가능한것같긴 한데
아이디어는 오늘 떠올렸는데 내일 부터 한번 research 해볼까 하는데 혹시 비슷한
경험이 있을실까요?
번외로, 윈도우 서비스를 만드실 때 생각하셔야 할 점이 몇 가지 있을 것 같은데요! 제 생각을 덧붙여서 댓글로 의견을 드려봅니다.
윈도우 서비스는 STDOUT/STDIN/STDERR 개념이 없습니다. 모든 기록은 Windows 이벤트 로그로 기록을 남기거나, 크기가 일정 수준 이상으로 늘지 않는 롤링 로그를 기록해서 과거 기록은 지우도록 로그 관리를 꼼꼼하게 하셔야 할 수 있습니다.
localhost 통신을 할 때, 모종의 이유로 포트가 다른 서비스나 애플리케이션에 의해서 먼저 선점이 될 가능성을 고려해야 할 수 있다고 생각합니다. 그래서 약속된 포트 번호를 고정해서 브라우저에서 서비스를 discovery하는 방식 외에 좀 더 discovery 성공률을 높일 수 있는 보완책을 하나 이상 고려하셔야 할 것 같습니다.
구닥다리 기술입니다만, 이런 discovery에 관련된 어려움을 우아하게 풀 수 있는 의외로 명료한 방법은 Out-of-Process COM 같은 기술에 숨어 있습니다.
윈도우 서비스는 기본적으로 사용자 계정이 아닌 시스템 계정 명의로 실행됩니다. 확인해볼 필요는 있겠습니다만, 시스템 계정이라고 해서 C:\Users 폴더의 데이터를 자유롭게 열람할 수 있다는 보장은 없기 때문에, 서비스 실행 계정을 시스템 계정으로 해야 할지, 아니면 사용자 계정 명의를 Impersonation 해야 할지도 고려해보셔야 할 것 같습니다.
기술적인 면 외에도, 만드시려는 서비스가 보안 취약점을 만들어내거나, 보안 관련 컴플라이언스를 위배하는 점은 없는지도 고려해보셔야 할 것 같습니다.
적으신 구성에서 Blazor wasm의 역할은 자바스크립트의 역할과 다를바가 없으며, 요즘의 exe 방식의 인터넷 뱅킹/결제 보안 프로그램이 정확히 이런 방식으로 작동합니다. 여기에서 자바스크립트만 Blazor로 바꾸는 셈이 되는 것이죠.
적어도 현재까지의 Blazor wasm은 자바스크립트 대신 c#으로 웹 개발을 할 수 있게 해주는 도구이며 거꾸로 말하면 웹 상에서 자바스크립트로 안되는 기능은 Blazor wasm에서도 안됩니다.
그리고, 웹 상의 Blazor wasm에서 이렇게 가져온 PC의 로컬 리소스(아마도 로그나, PC 정보, 장비 정보 등 같은 것이 될 것 같아 보이네요.)를 서로 다른 PC에서 교환하는 것은 Blazor wasm으로 채팅 프로그램을 만드는 것과 비슷한 구조가 되니 관련 내용을 찾아보시면 되겠네요.