itsource

Windows 8의 Metro 앱은 동일한 컴퓨터의 백엔드 데스크톱 앱과 어떻게 통신합니까?

mycopycode 2023. 4. 27. 22:22
반응형

Windows 8의 Metro 앱은 동일한 컴퓨터의 백엔드 데스크톱 앱과 어떻게 통신합니까?

새로운 Metro 스타일의 Windows 8용 앱을 사용하여 UI 프런트 엔드를 구축하고 와 통신하고 싶은 상황입니다.동일한 로컬 컴퓨터(예: 윈도우즈 서비스 앱)의 데스크톱에서 실행되는 NET 응용 프로그램입니다.

메트로 앱과 데스크톱 앱 사이에서 사용할 수 있는 프로세스 간 통신 형식은 무엇입니까?

Visual Studio 팀의 Pavel Minaev 씨는 여기에 코멘트를 통해 초기 정보를 제공해 주셔서 감사합니다.

Martyn Lovell에 따르면, 그것에 대한 어떠한 의도적인 메커니즘도 없으며, 그것에 사용될 수 있는 일부는 의도적으로 제한됩니다.예를 들어 명명된 파이프는 존재하지 않으며 메모리 매핑 파일도 존재하지 않습니다.소켓(서버 소켓 포함)이 있지만 localhost에 연결할 때는 동일한 앱에만 연결할 수 있습니다.공유된 "알려진 폴더"(문서, 사진 등) 중 하나에서 일반 파일을 사용할 수 있지만, 이는 폴링이 필요하고 사용자가 볼 수 있는 상당히 조잡한 해킹입니다. -- 이 문제에 대한 Pavel Minaev 논평

일반적인 접근 방식에 실패했기 때문에 웹 서비스를 사용하거나 데이터베이스에 읽기/쓰기하여 어떤 형태로든 의사소통을 할 생각이었는데, 이 두 가지 모두 프로세스가 동일한 시스템에서 실행될 때 과도하게 작동하는 것처럼 보입니다.

제가 여기서 하려는 말이 말이 되나요?데스크톱에서 실행 중인 기존 서비스의 프런트엔드 UI가 메트로 앱의 필요성을 알 수 있습니다.아니면 데스크톱에서 실행되는 프런트 엔드 UI(즉, 비메트로 앱)에 WPF를 사용하는 것이 더 낫습니다.

저는 지금 Win8에 제 기존 프로젝트를 이식하고 있습니다.NamedPipes WCF를 통해 서로 통신하는 Windows 서비스와 트레이 애플리케이션으로 구성됩니다.메트로가 명명된 파이프를 지원하지 않는다는 것을 이미 알고 있을 것입니다.저는 결국 전이중 연결을 위해 TcpBinding을 사용하게 되었습니다.

게시물은 지원되는 기능에 대해 설명합니다.

Metro 고객이 사용할 수 있는 WCF 서버 샘플이 여기 있습니다.

또한 메트로에서는 동기식 WCF를 사용할 수 없습니다.비동기식 작업 기반 래퍼를 사용해야 합니다.

질문해 주셔서 감사합니다.저는 저에게 좋은 출발점이었습니다 :)

제가 참석한 //build/세션 마지막에 이런 질문들이 많이 있었습니다.큰 그림 세션 중 하나를 진행한 임원인 Aleš Holechek는 청중들로부터 그것들을 다루기 위해 다가왔습니다.C++ 개발자가 아니더라도 해당 세션을 다운로드하여 Q&A를 시청하십시오. http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-789C

Metro 앱은 기기에 설치되는 데스크톱 앱이나 서비스를 기대할 수 없습니다.그리고 데스크톱 앱은 언제든지 일시 중단될 수 있기 때문에 실행 중인 메트로 앱에 의존할 수 없습니다.당신은 다르게 생각하기 시작할 필요가 있습니다.알레시의 말을 들어봐요

Windows 8.1 업데이트에서는 Windows Store 앱과 데스크톱 구성 요소 간의 통신이 C#으로 작성되어 있습니다.NET 4.5+는 이제 엔터프라이즈 시나리오에서 사이드 로드 애플리케이션에 대해 공식적으로 지원됩니다.

사이드 로드된 Windows Store 앱에 대한 Windows 런타임 구성 요소 브로커링

견적서 작성:

중요한 비즈니스 기능과 규칙이 기존 소프트웨어 자산에 구현되어 있고 기업에서 새로운 애플리케이션 스타일의 생산성이 높은 다양한 시나리오를 사용하고 있다는 점을 감안하여 Windows 8.1 업데이트에는 사이드 로드 애플리케이션을 위한 Brokered Windows Runtime Components라는 새로운 기능이 포함되어 있습니다.Windows Store 앱에서 이 코드와 상호 작용하면서 기존 데스크톱 소프트웨어 자산을 한 프로세스(데스크톱 구성 요소)에서 실행하는 기능을 설명하기 위해 IPC(프로세스 간 통신)라는 용어를 사용합니다.Windows에서 NT 서비스를 사용하는 애플리케이션과 데이터베이스 애플리케이션이 유사한 다중 프로세스 아키텍처를 공유하기 때문에 엔터프라이즈 개발자에게 친숙한 모델입니다.

이 접근 방식을 구현하는 것은 처음에는 다소 복잡한 측면이 있지만, Windows Store 및 데스크톱 구성 요소 간의 긴밀한 통합을 가능하게 합니다.당분간 공용 Windows Store 인증을 통과하지 못할 것입니다.

InfoQ에는 프로토콜 핸들러와 느슨하게 결합된 Metro 앱을 구축하는 방법에 대한 기사가 있습니다.이는 Windows에서 오랫동안 지원해 왔으며 데스크톱 응용 프로그램 레지스터 자체를 프로토콜 처리기로 예측할 수 있으며 메트로 응용 프로그램이 이 메커니즘을 통해 통신할 수도 있습니다.

이것이 가능한지는 모르겠지만, 체크아웃하는 것은 흥미로울 수도 있습니다.

Christophe Nasarre는 로컬 파일을 사용하여 그것을 하는 다소 진부한 방법에 대해 블로그에 올렸습니다.그 결과 두 앱의 UI를 전환할 필요 없이 데스크톱 앱/윈도우즈 스토어 앱(블로그에서 DA/WSA라고 함) 간의 통신이 가능합니다.그는 또한 프로토콜 핸들러와 관련된 덜 촌스러운 기술에 대해서도 블로그에 올렸습니다.

DA와 통신하는 WSA를 보유하는 것은 스토어인증 요구 사항에 의해 명시적으로 금지됩니다.

Windows Store 앱은 파일 및 레지스트리 키를 포함하여 로컬 메커니즘을 통해 로컬 데스크톱 응용 프로그램 또는 서비스와 통신해서는 안 됩니다.

하지만 "로컬 메커니즘"만 제한합니다.그래서 저는 통신을 라우팅하기 위한 웹 서비스를 구축할 수 있다고 생각합니다.

수동 cmd 작업을 추가로 수행할 수 있다고 생각되는 경우 다음을 시도할 수 있습니다.

X:/> CheckNetIsolation.exe LoopbackExempt –a –n=<packageID>;

Net Isolation을 선택합니다.exe는 winRT 설치에 포함되어 있으므로 추가로 설치할 필요가 없습니다.

시도해봤습니다. 패키지 업데이트 후에도 작동합니다.

표시된 대로: http://msdn.microsoft.com/en-us/library/windows/apps/Hh780593.aspx

여기에는 패키지를 찾는 방법이 설명되어 있습니다.앱 ID: http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/82bad7d4-d52b-4731-a396-13ab9004c1cc/how-to-get-the-appid-of-a-metro-style-app-

로컬 서비스를 이용하여 메트로 앱에서 데스크톱 앱으로 동일한 기계에서 통신이 가능합니다.저는 얼마 전에 로컬 서비스를 사용하여 WinRT 샌드박스를 우회하는 방법인 간단한 "개념 증명"을 구현했습니다.아직 서비스 설치를 위한 일종의 '사회공학'이나 직접적인 가이드가 필요하지만, 어쨌든 가능합니다.
Windows Store에 이러한 앱을 추가할 때 "로컬 서비스" 통신에 대한 인증 규칙에 대해서는 잘 모르겠습니다.

여기 샘플

설계상 Metro 애플리케이션은 WinRT API 및 사용 가능한 기능만 사용하여 기본 PC에 직접 액세스할 수 없습니다.그러나 PC와 모든 데이터에 액세스하기 위한 백엔드 서비스를 생성하면 기본적으로 더 이상 샌드박스에서 실행되지 않습니다.

유일한 "문제"는 사용자가 이 백엔드 서비스를 수동으로 설치해야 한다는 것입니다. 그러나 일부 "소셜 엔지니어링"을 사용하면 문제가 되지 않습니다.사용자는 "PC 브라우저" Metro 앱을 다운로드하고 WinRT API를 사용하여 모든 사진, 음악 및 비디오를 검색할 수 있지만, 앱 하단에는 "PC 브라우저 파워팩을 다운로드하고 전체 PC를 무료로 검색하십시오."라는 메시지도 표시됩니다.

사용자는 웹 페이지로 리디렉션되며, 여기서 사용자는 전체 PC의 파일에 액세스하기 위한 "PC 브라우저" 백엔드 서비스가 포함된 클래식 데스크톱 설치 프로그램을 다운로드할 수 있습니다.이 데스크톱 서비스가 설치되면 Metro 앱이 이를 감지하여 전체 PC를 탐색하는 데 사용할 수 있습니다.사용자는 만족하지만 WinRT 샌드박스가 손상되었습니다.

물론 이것은 Windows 8 ARM 태블릿에서는 작동하지 않습니다.이 해결 방법을 사용하면 바이러스 백신, 토렌트/P2P 클라이언트 등과 같은 기존 데스크톱 앱을 위한 Metro 앱 클라이언트를 구축할 수도 있습니다.

요점을 놓쳤을 수도 있지만 전용 네트워크 기능을 활성화할 때 로컬 IP 주소(localhost가 아님)를 사용하여 로컬 실행 중인(http) 서버에 연결할 수 있습니다.그러면 winrt 앱이 wpf 데스크톱 앱과 통신하는 시나리오가 활성화됩니다.

언급URL : https://stackoverflow.com/questions/7465517/how-can-a-metro-app-in-windows-8-communicate-with-a-backend-desktop-app-on-the-s

반응형