안녕하세요 직장 생활 2년차 초보 프로그래머입니다.
현재 C# WPF,Winform 을 이용하여 로컬에서 응용프로그램을 사용하는데요,
요청사항이 원격에서 여러 장비의 응용프로그램들을 제어하고 싶다고 하는데
현재 프로그램을 어떻게 구성해야 하는지 도저히 감이 안잡혀서요…
방법이 있을까요…?
안녕하세요 직장 생활 2년차 초보 프로그래머입니다.
현재 C# WPF,Winform 을 이용하여 로컬에서 응용프로그램을 사용하는데요,
요청사항이 원격에서 여러 장비의 응용프로그램들을 제어하고 싶다고 하는데
현재 프로그램을 어떻게 구성해야 하는지 도저히 감이 안잡혀서요…
방법이 있을까요…?
질문을 좀 더 구체적으로 해주실 수 있나요? 모호한 점이 있습니다.
로컬 컴퓨터에서 WPF 또는 윈폼으로 개발한 응용프로그램이 동작 한다
고 이해하면 될까요?
원격에서 로컬 컴퓨터에 연동된 장비를 제어하고 싶은데, 이를 개발된 응용프로그램을 통해서 가능하게 하고 싶다
고 이해하면 될까요?
로컬의 응용프로그램이 수정할 수 없는 응용프로그램인지 개발되고 소스코드가 있어서 변경 가능한 응용프로그램인지에 따라 불가능하거나 가능하고 어떻게 가능한지가 결정될 것 같고요,
제어하고자 하는 장비에 따라 원격 제어의 방법 또한 달라질 수 있어서 관련된 상세한 정보를 공유해주셔야 합니다.
넵 로컬 컴퓨터에서 WPF 또는 윈폼으로 개발한 응용프로그램이 동작하고 소스코드가 있어서 변경 가능한 응용프로그램입니다.
메인 프로그램에서 각각의 PC에서 로컬로 동작하는 응용프로그램을 뷰를 통해 보거나 버튼을 클릭하여 제어할 수 있게 하고자 합니다.
저도 @dimohy 의견처럼 내용이 조금 불명확해 보입니다.
우선 View를 통해서 본다는 내용이 있는데
이 내용이 명확하지 않습니다.
chrome remote나 team viewer 처럼 원격을 원하시는 건지
프로그램 처리 데이터가 보이면 되는건지 확실치 않습니다.
remote 방식은 기존 솔루션 쓰는게 더 수월할거 같습니다.
다른 방법을 말씀 드리면
요청이 여러 장비의 응용프로그램들을 제어하고 싶다고 하셨는데
Client(N) - Server(1) - Admin(1 or N)
구조로 설계 하고
Client 에서 Server에 접속 하고
Admin에서 Server에 접속 하고
Admin에서 Server에 명령 전달 하면
Server에서 Client에 전송해서
Client에서 수신 해서 처리 하는 방식으로 하면 될거 같습니다.
Client View의 경우는 Client에서 처리 되는 데이터를
Server에 보내고
Admin에서 가져다 View 하는 방식으로 처리 하면 될거 같습니다.
응용프로그램 <—> 원격 서버 <—> 원격 제어 App
제 생각을 글로 전달하기가 너무 어렵네요…
각 pc의 응용프로그램을 관리하는 모니터링 페이지를 만드려고 하는데요
각 응용프로그램의 데이터 등은 http api 를 통해 받고자 하는데,
모니터링 페이지에 응용프로그램의 제어를 현재 UI를 그대로 받아와서 제어 하고 싶습니다(Teamview 처럼)
그러면 현재 WPF,Winform으로 개발된 응용프로그램에 API와 화면을 받아오는 기능을 어떻게 추가해야 할지 궁금합니다. ASP.net을 이용하는건지 blazor를 이용해서
웹호스팅을하여 모니터링 페이지에서 Webviewer로 받아오면 되는지요…
로컬 PC에서는 최대한 응용프로그램 처럼 바탕화면에서 EXE파일로 실행되게 하고자합니다.
이런 기능 직접 만들 필요없이 상용 서비스 사용하시는 것이 가장 효율적입니다. 찾아보시면 팀뷰어말고 국내에도 여러 상용 원격 제어 프로그램들이 있는데 상대방에서 수락할 필요 없이 지정된 숫자의 컴퓨터를 중앙에서 관리 목적으로 원격제어하는 기능이 별도 상품으로 있습니다. 보통 이런 상품들은 제어할 컴퓨터 대수로 비용이 산정됩니다.
많은 분들께서 답을 달아주신 것처럼, 화면을 공유하는 원격 제어 기능은 만약 고객이 100% C#/CLR 기반으로 동작하는 .NET용 코드를 만들어달라는 명확한 요구 사항을 요청한게 아니라면, 쉽게 도입할 수 있는 수단이 OS 자체 기능부터 상용 솔루션까지 무척 폭넓은 제품들이 이미 시장에 많이, 그리고 널리 나와있습니다. 다만 각 제품들마다 특성이 있어서, 어떤 것을 어떻게 사용할 것인가는 충분히 제품들을 PoC/벤치마킹해본 후 연동 방법을 결정하셔야 하겠습니다.
일반적으로 다음의 제품들이 많이 쓰입니다.
그리고 Windows는 2000, XP 이후로 컴퓨터를 사용하는 사람이 단 한명이라도 반드시 로그온을 거쳐야 합니다. 그래서 컴퓨터가 시작되면 같이 실행되어야할 서비스형 프로그램은 주로 NT 서비스로 만들어서 배포하지만, 사용자와 상호 작용이 필요한 원격 데스크톱류 프로그램들은 NT 서비스로 개발해서 배포하는 것이 어렵습니다.
그래서 Sysinternals의 AutoLogon 같은 유틸리티를 이용하여 자동 로그온시킬 사용자의 비밀 번호를 LSA (Local Security Authority) 스토리지에 보관한 후 로그온하는 대안을 적용하기도 하니 참고하시면 좋겠습니다. (단, 이 경우 컴퓨터 앞에 앉은 사용자가 LSA 스토리지 API를 사용하는 방법을 아는 엔지니어라면, LSA 스토리지를 접근할 수 있게 되므로 컴퓨터의 물리 보안, 그리고 원격 접속 보안을 신경써야 합니다.)