blazor로 이런 시스템이 가능할까요??

wasm11

그림이 허접해서 죄송합니다. blazor를 열심히 파면서 생각해본 시스템인데

일단 클라이언트 피씨에 윈도우서비스가 설치되있다는 가정하에 해당 서비스는
http통신이 가능한 port가 열려있다고 가정합니다 ;
그리고 웹서버에 배포된 blazor로 해당 피씨마다 깔린 localhost port 를 통해서
해당 local pc 리소스에 접근하는 구상을 해보고있는데 가능할까요?

정리하면 개인 pc에 윈도우서비스로 API 서비스를 올려놓고
localhost:192 번 이렇게 접근할수 있고

웹서버에서 blazor wasm 을 내려받아 해당 pc에 로컬 port를 통해 통신하고 개인 pc
리소스에 접그하는구상입니다. 이론상으로 가능한것같긴 한데

아이디어는 오늘 떠올렸는데 내일 부터 한번 research 해볼까 하는데 혹시 비슷한
경험이 있을실까요?

1 Like

안녕하세요.

리소스에 접근권한이 있다는 전제하에 윈도우 서비스가 OpenAPI처럼(?) 작동해 주면 문제 없을 것 같습니다.
그런데 client pc의 ip만 알면 해당 PC에서 브라우저를 띄우지 않아도 될 것 같은데
그래야 하는 이유가 있으시겠죠… ^^;;

감사합니다.

2 Likes

안녕하세요.

이론적으론 가능해요
질문자님 처럼의 구상은 아니지만 SPA형식의 웹뷰를 API리소스가 아닌 소켓 통신으로 연결하여 움직이는 화면을 구현해본 경험이 있어요.

번외로 자료 찾아보실 때 CORS 관련된 내용도 함께 공부하시면 좋을 것 같네요

2 Likes

웹소켓이나 Signal-R 보시기를 권유드립니다. 일반적인 TCP/IP 통신은, Azure 등의 클라우드 정책 혹은 사용자 컴터의 방화벽이나 브라우저 설정때문에 배포하려는 환경에 맞지 않을 수 있습니다.

2 Likes

번외로, 윈도우 서비스를 만드실 때 생각하셔야 할 점이 몇 가지 있을 것 같은데요! 제 생각을 덧붙여서 댓글로 의견을 드려봅니다.

  • 윈도우 서비스는 STDOUT/STDIN/STDERR 개념이 없습니다. 모든 기록은 Windows 이벤트 로그로 기록을 남기거나, 크기가 일정 수준 이상으로 늘지 않는 롤링 로그를 기록해서 과거 기록은 지우도록 로그 관리를 꼼꼼하게 하셔야 할 수 있습니다.
  • localhost 통신을 할 때, 모종의 이유로 포트가 다른 서비스나 애플리케이션에 의해서 먼저 선점이 될 가능성을 고려해야 할 수 있다고 생각합니다. 그래서 약속된 포트 번호를 고정해서 브라우저에서 서비스를 discovery하는 방식 외에 좀 더 discovery 성공률을 높일 수 있는 보완책을 하나 이상 고려하셔야 할 것 같습니다.
    • 구닥다리 기술입니다만, 이런 discovery에 관련된 어려움을 우아하게 풀 수 있는 의외로 명료한 방법은 Out-of-Process COM 같은 기술에 숨어 있습니다.
  • 윈도우 서비스는 기본적으로 사용자 계정이 아닌 시스템 계정 명의로 실행됩니다. 확인해볼 필요는 있겠습니다만, 시스템 계정이라고 해서 C:\Users 폴더의 데이터를 자유롭게 열람할 수 있다는 보장은 없기 때문에, 서비스 실행 계정을 시스템 계정으로 해야 할지, 아니면 사용자 계정 명의를 Impersonation 해야 할지도 고려해보셔야 할 것 같습니다.
  • 기술적인 면 외에도, 만드시려는 서비스가 보안 취약점을 만들어내거나, 보안 관련 컴플라이언스를 위배하는 점은 없는지도 고려해보셔야 할 것 같습니다.
3 Likes

적으신 구성에서 Blazor wasm의 역할은 자바스크립트의 역할과 다를바가 없으며, 요즘의 exe 방식의 인터넷 뱅킹/결제 보안 프로그램이 정확히 이런 방식으로 작동합니다. 여기에서 자바스크립트만 Blazor로 바꾸는 셈이 되는 것이죠.

적어도 현재까지의 Blazor wasm은 자바스크립트 대신 c#으로 웹 개발을 할 수 있게 해주는 도구이며 거꾸로 말하면 웹 상에서 자바스크립트로 안되는 기능은 Blazor wasm에서도 안됩니다.

그리고, 웹 상의 Blazor wasm에서 이렇게 가져온 PC의 로컬 리소스(아마도 로그나, PC 정보, 장비 정보 등 같은 것이 될 것 같아 보이네요.)를 서로 다른 PC에서 교환하는 것은 Blazor wasm으로 채팅 프로그램을 만드는 것과 비슷한 구조가 되니 관련 내용을 찾아보시면 되겠네요.

4 Likes