위 구상대로 데스크톱앱을 통해 raw 데이터를 받아 가공해서 블레이저 서버에 signalR로 전달하고, 블레이저 서버는 또 signalR 로 클라이언트에게 보내는게 효율적일까 하는 겁니다.
블레이저 서버가 signalR을 통신하기 위해 서버와 클라이언트 기능 두개를 탑재해야 하는것 같아서요.
만약 wpf를 빼버린다 하면 블레이저 서버가 장비로 부터 오는 raw데이터를 어떤 방법으로 받을 수 있는지요? 웹은 문외한이라… 감히 여쭤봅니다.
답신 남겨주셔서 감사합니다
wpf를 만드는 이유는 우선 웹 서버가 구동되기 전단에서, 장비들이 잘 연결되었는지 또는 통신 장애는 없는지 엔지니어 의 모니터링이 목적이라 로그뷰어 및 트래픽 감시를 위해 ui가 필요해서 입니다.
장비는 200여대 정도 되는데 트래픽이 좀 많습니다. 그래서 웹과는 분리를 하는게 좋겠다 여겼습니다
그걸 포기한다면 오로지 웹에서 다 보여줘야 하는데, 그럴려면 답글 주신것처럼 api 서버에 소켓을 열어서 장비랑 통신하고 가공된 정보를 블레이저 서버로 보내야 하겠네요. 이때 클라이언트 역할로 해야할까요? 아니면 서버역할로 해야 할까요?
질문의 요지는 모니터링(및 제어) 파트에 실시간 정보를 주거나 장비 또는 장비 정보 수집기를 제어하기 위해 어떤 기술을 써야 하는가 인 것 같네요.
Blazor는 웹 앱 기술입니다. 원하는 기능을 제공하기 위해 직접적으로 필요하지는 않습니다. 어떤 RPC 기술을 사용해서 실시간 정보를 양방향으로 주고 받을 수 있는지 살펴보시면 될 것 같습니다.
예) SignalR, gRPC, …
SignalR 서버는 Web Server에만 있으면 됩니다. (첨부된 도식 참고) Device Data Receiver 및 Client는 SignalR 클라이언트가 됩니다.
WPF를 뺀다는 의미는 Device Data Receiver와 Monitoring/Controls를 하나로 통합한다는 의미입니다. 이것은 장비의 프로토콜 사양에 의존적이기 때문에 그쪽에 맞게 구현해야 합니다. 가령 TCP/IP의 자체 프로토콜이라면 별도의 TCP/IP 리스너를 구현해야 합니다.
블레이저 서버만 둡니다. 기존 윈폼이 담당하면 UI를 블레이저로 구현하여 웹페이지로 보는 것이지요. 서버에 기존 윈폼이 담당하던 소켓서버역할도 구현하고요. 그러면 웹페이지의 유저액션에 따라 장비에 패킷을 보내야할 때 구현한 소켓서버역할에서 바로 보내면 되겠지요.
그런데 1번처럼하면 UI 변경같은 것 때문에 재배포시에 소켓서버도 잠깐 내려져야할 겁니다. 그 사이에 DB에 저장되어야할 값이 있을 시나리오라면 분리를 해야겠지요. 질문자님 그림처럼요. 이 상황에서 블레이저서버가 wpf에 보내는 신호는 signalr이 아니라 그냥 소켓통신을 하면 될 것 같습니다.
답신 남겨주신 모든 분들께 감사드립니다.
주~욱 글을 읽다보니 미처 말씀 못드린 부분도 있는것 같아 한두가지 첨언하려고 합니다.
우선 웹서버 앞에 장비랑 통신하는 전용 앱을 두려는 이유는, "신현뚜벅"님 말씀처럼 웹서버를 잠시라도 다운시켜야 할 경우가 생기거나, 또는 가공할 정보의 수정이 생길경우 웹서버까지 지장을 안주게 하기 위함이 큽니다.
그 밖에 장비 전용 로그도 남겨야 할 것 같고, 장비와의 하트비트 같은 폴링 신호는 굳이 웹서버에게 부담을 주고싶지는 않았거든요. 그래서 필수 앱으로 보고 있습니다.
wpf를 쓰는 이유는 일단, 고객이 원하는 바가 큽니다. ㅠㅠ
비쥬얼틱한 대시보드를 원하네요.
웹에서도 되는거지만, 실시간 트래픽 관련 정보를 굳이 웹까지 끌고 갈 필요는 없을것 같습니다.
여튼 이 두가지 사항이 가장 커서 wpf를 사용하는 건데, 문제는 가공된 정보를 블레이저 서버로 주고 받고 해야 하는 건이 많이 궁금했습니다.
권고하는 signalR을 쓰는게 맞는지 소켓통신을 하는게 맞는건지 아니면 다른 좋은방법이 있는지 말이죠. 장비로 부터 오는 모든 정보를 걸러서 필요한 데이터만 실시간 급으로 웹서버로 보내려는데 찾아본 바로는 signalR 이 제격으로 보였습니다.
아~~ 이게 글로 쓰려니 답답한 부분이 있긴한데, 여튼 주요 부분은 위 설명과 같습니다.
그나저나 이렇게 적극적으로 글 남겨 주셔서 다시한번 감사드립니다.
제안 주셔서 감사합니다. 감이 좀 잡혀지는것 같긴합니다.
우선 저로서는 비UI 앱으로 대체하는게 큰 변화겠네요.
이 부분은 고객 설득을 진행해 봐야 할 것 같구요.
웹 서버가 다운되어도 안정적으로 데이터는 수집할 수 있어야 하는데 그 부분이 없어서 좀 맘에 걸리네요. 고민해 봐야 할 것 같아요.