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

wasm11

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

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

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

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

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

1개의 좋아요

안녕하세요.

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

감사합니다.

2개의 좋아요

안녕하세요.

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

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

2개의 좋아요

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

2개의 좋아요

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

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

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

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

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

4개의 좋아요