Windows 8 용 앱의 새로운 Metro 스타일을 사용하여 빌드 된 UI 프런트 엔드가 있고 동일한 로컬 컴퓨터 (예 : Windows 서비스 앱)의 데스크톱에서 실행되는 .NET 응용 프로그램과 통신하려는 경우.
메트로 앱과 데스크톱 앱간에 어떤 형태의 프로세스 간 통신을 사용할 수 있습니까?
여기에 주석으로 몇 가지 초기 정보를 제공 한 Visual Studio 팀의 Pavel Minaev에게 감사드립니다.
Martyn Lovell에 따르면이를위한 고의적 인 메커니즘이 없으며이를 위해 사용할 수있는 일부는 의도적으로 제한됩니다. 예를 들어 명명 된 파이프는 존재하지 않으며 메모리 매핑 파일도 없습니다. 소켓 (서버 소켓 포함)이 있지만 localhost에 연결할 때는 동일한 앱에만 연결할 수 있습니다. 공유 된 “알려진 폴더”(문서, 그림 등) 중 하나에서 일반 파일을 사용할 수 있지만 이는 폴링이 필요하고 사용자에게 표시되는 상당히 조잡한 해킹입니다. – 파벨 Minaev은 에 주석 이 문제
그래서 정상적인 접근 방식에 실패하면 어떤 형태의 통신이 일어나기 위해 웹 서비스를 사용하거나 데이터베이스에 대한 읽기 / 쓰기를 생각하고 있었는데, 둘 다 프로세스가 동일한 시스템에서 실행 중일 때 과잉처럼 보였습니다.
내가 여기서 시도하는 것이 의미가 있습니까? 데스크톱에서 실행되는 기존 서비스의 프런트 엔드 UI가 메트로 앱이 필요하다는 것을 알 수 있습니다. 또는 데스크톱에서 실행되는 프런트 엔드 UI (예 : 메트로가 아닌 앱)에 WPF 만 사용하는 것이 좋습니다.
답변
현재 기존 프로젝트를 Win8로 이식하고 있습니다. NamedPipes WCF를 통해 서로 통신하는 Windows 서비스 및 트레이 응용 프로그램으로 구성됩니다. 이미 알고 계시 겠지만 Metro는 명명 된 파이프를 지원하지 않습니다. 나는 전이중 연결을 위해 TcpBinding을 사용했습니다.
이 게시물 은 지원되는 기능에 대해 설명합니다.
Metro 클라이언트가 사용할 수있는 내 WCF 서버의 샘플은 여기에 있습니다 .
또한 Metro에서는 동기 WCF를 사용할 수 없습니다. 비동기식 작업 기반 래퍼 를 사용해야 합니다.
그리고 질문 해주셔서 감사합니다. 나는 나를 위해 좋은 출발점이었다 🙂
답변
내가 참석 한 // build / 세션의 끝에 이와 같은 많은 질문이있었습니다. 큰 그림 세션 중 하나를 수행 한 임원 인 Aleš Holeček이 청중에서 나와이를 처리했습니다. C ++ 개발자가 아니더라도 해당 세션을 다운로드하고 Q & A를 시청하세요. http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-789C
Metro 앱은 컴퓨터에 설치된 데스크톱 앱이나 서비스를 믿을 수 없습니다. 또한 데스크톱 앱은 언제든지 일시 중단 될 수 있기 때문에 실행중인 Metro 앱을 믿을 수 없습니다. 다르게 생각해야합니다. 이것에 대한 Aleš를 들어보십시오.
답변
Windows 8.1 업데이트를 통해 .NET 4.5 이상용 C #으로 작성된 Windows 스토어 앱과 데스크톱 구성 요소 간의 통신이 이제 엔터프라이즈 시나리오의 테스트 용로드 애플리케이션에 대해 공식적으로 지원됩니다.
테스트 용으로로드 된 Windows 스토어 앱을위한 조정 된 Windows 런타임 구성 요소
인용하려면 :
중요한 비즈니스 기능과 규칙이 기존 소프트웨어 자산에 구현되어 있고 기업이 새로운 응용 프로그램 스타일의 생산성이 높은 다양한 시나리오를 가지고 있음을 인식하고 Windows 8.1 업데이트에는 테스트 용으로로드 할 수있는 Brokered Windows Runtime Components라는 새로운 기능이 포함되어 있습니다. 응용 프로그램. IPC (프로세스 간 통신)라는 용어를 사용하여 Windows 스토어 앱에서이 코드와 상호 작용하는 동안 하나의 프로세스 (데스크톱 구성 요소)에서 기존 데스크톱 소프트웨어 자산을 실행하는 기능을 설명합니다. 이는 Windows에서 NT 서비스를 사용하는 데이터베이스 응용 프로그램과 응용 프로그램이 유사한 다중 프로세스 아키텍처를 공유하므로 엔터프라이즈 개발자에게 친숙한 모델입니다.
이 접근 방식을 구현하는 것은 처음에는 다소 복잡한 측면이지만 Windows 스토어 및 데스크톱 구성 요소간에 심층적 인 통합이 가능합니다. 당분간은 공개 Windows Store 인증을 통과하지 못할 것임을 명심하십시오.
답변
InfoQ에 대한 기사 가 있습니다.프로토콜 핸들러를 사용하여 느슨하게 결합 된 Metro 앱을 빌드하는 방법 에 대한 . 이것은 Windows에서 오랫동안 지원되어 왔으며 데스크톱 응용 프로그램이 자신을 프로토콜 처리기로 등록하고 메트로 응용 프로그램이이 메커니즘을 통해 통신 할 수 있다고 예상 할 수 있습니다.
이것이 가능한지 모르겠지만 확인하는 것이 흥미로울 수 있습니다.
답변
Christophe Nasarre는 로컬 파일을 사용하는 다소 엉뚱한 방법에 대해 블로그 에 올렸 습니다. 그 결과 두 앱의 UI간에 전환 할 필요없이 데스크톱 앱 / Windows 스토어 앱 (블로그에서는 DA / WSA라고 함) 간의 통신이 이루어집니다. 그는 또한 프로토콜 핸들러와 관련된 또 다른 덜 해킹 된 기술에 대해 블로그에 올렸습니다.
DA와 통신하는 WSA를 갖는 것은 스토어 앱 인증 요구 사항에 의해 명시 적으로 금지 되어 있습니다.
Windows 스토어 앱은 파일 및 레지스트리 키를 포함하여 로컬 메커니즘을 통해 로컬 데스크톱 애플리케이션 또는 서비스와 통신해서는 안됩니다.
… 그러나 “로컬 메커니즘”만 제한합니다. 따라서 통신 라우팅을위한 웹 서비스를 구축 할 수 있다고 생각합니다.
답변
추가 수동 cmd 작업을 수행 할 수 있다고 생각되면 다음을 시도해 볼 수 있습니다.
X:/> CheckNetIsolation.exe LoopbackExempt –a –n=<packageID>;
CheckNetIsolation.exe는 winRT 설치에 포함되어 있으므로 추가로 설치할 필요가 없습니다.
나는 그것을 시도했다 : 그것은 패키지 업데이트 후에도 작동합니다.
http://msdn.microsoft.com/en-us/library/windows/apps/Hh780593.aspx에 표시된대로
다음은 앱의 packageID를 찾는 방법을 설명합니다. http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/82bad7d4-d52b-4731-a396-13ab9004c1cc/how-to-get- 지하철 스타일 앱의 앱
답변
로컬 서비스를 사용하여 Metro 앱에서 데스크톱 앱으로 동일한 컴퓨터에서 통신 할 수 있습니다. 얼마 전에 로컬 서비스를 사용하여 WinRT 샌드 박스를 우회하는 방법 인 간단한 “개념 증명”을 구현했습니다. 서비스를 설치하려면 여전히 일종의 “사회 공학”또는 직접 가이드가 필요하지만 어쨌든 가능합니다.
Windows Store에 이러한 앱을 추가 할 때 “로컬 서비스”통신에 대한 인증 규칙에 대해 잘 모르겠습니다.
설계 상 Metro 애플리케이션은 WinRT API 및 사용 가능한 기능 만 사용하여 기본 PC에 직접 액세스 할 수 없습니다. 그러나 PC 및 모든 데이터에 액세스하기위한 백엔드 서비스를 만들면 기본적으로 더 이상 샌드 박스에서 실행되지 않습니다.
유일한 “문제”는 사용자가이 백엔드 서비스를 수동으로 설치해야한다는 것입니다. 그러나 일부 “소셜 엔지니어링”을 사용하면 문제가되지 않습니다. 사용자가 “PC 브라우저”Metro 앱을 다운로드하면 사용자가 모든 사진, 음악 및 비디오를 탐색 할 수 있습니다. , WinRT API를 사용하지만 앱은 하단에 “PC 브라우저 파워팩을 다운로드하고 PC 전체를 무료로 검색”하는 메시지도 표시합니다.
사용자는 전체 PC의 파일에 액세스하기위한 “PC 브라우저”백엔드 서비스가 포함 된 클래식 데스크탑 설치 프로그램을 다운로드 할 수있는 웹 페이지로 리디렉션됩니다. 이 데스크톱 서비스가 설치되면 Metro 앱이이를 감지하여 전체 PC를 탐색하는 데 사용할 수 있습니다. 사용자는 만족하지만 WinRT 샌드 박스가 손상되었습니다.
물론 이것은 Windows 8 ARM 태블릿에서는 작동하지 않습니다. 이 해결 방법을 사용하면 바이러스 백신, 토렌트 / P2P 클라이언트 등과 같은 클래식 데스크톱 앱용 Metro 앱 클라이언트를 구축 할 수도 있습니다.