! 簡単にするために、Windows ストア アプリケーション(Metro または Modern UI とも呼ばれます) を「アプリ」と呼び、一般的なデスクトップ アプリケーションを「アプリケーション」と呼びます。
Windows 8 システムでアプリとアプリケーション間の通信を管理する方法は? (原則についての議論を始めないでください - これが本当に必要とされるユースケースはたくさんあります!)
基本的に、ここ数日で何百もの記事を読みましたが、最初から正しく行う方法はまだ不明です. 主に、いくつかの矛盾する情報を見つけたからです。ここでの質問で、Windows 8 の最終的な可能性という観点から、この問題に再アプローチしたいと思います。
与えられた状況:
- アプリとアプリケーションが同じシステムで実行される
- 1:1 コミュニケーション
- アプリケーションはネイティブ (Delphi で作成)
- 管理者、または必要に応じてシステム権限もアプリケーションに使用できます
- ユース ケースの 90% で、アプリはアプリケーションによって実行されるアクションを要求し、何らかのテキスト結果を受け取ります。このためにアプリを放置したり、凍結したりしないでください。
- 10% では、アプリケーションはアクション (何らかのイベントによってトリガーされる) を実行し、アプリに通知します。結果として、特定の情報をタイルまたは既に実行中のアクティブなアプリに表示するか、可能であればアプリを実行してフォアグラウンドに移動することができます。 .
「単純な」問題は、これをどのように達成するかです。
- 現在、ローカル Web サーバーへのアクセスは実際に許可されていますか? (長い間ではなかったと思いますが、現在は最終リリース以来です)
- WCF? (->どうやらMSはもうそれを推奨していません)
- ローカル REST/SOAP サーバーでの HTTP リクエスト?
- WinRT シンジケーション API ? (RSS/atom 応答を使用した Web サービス アクセスの別の形式)
- WebSockets ( MessageWebSocketなど)?
- 他の形式の TCP/IP 通信はありますか?
- 入出力用のテキスト ファイルを共有する (実際には、これを単純に考えるのは面倒ですが、少なくとも MS がブロックできない可能性はあります...)
- 名前付きパイプは許可されていませんよね?
このトピックについては SO でいくつかの議論がありますが、Windows 8 の最終バージョンをリリースする前に MS が大幅に変更したため、それらのほとんどは最新ではありません。古い情報と新しい情報を混同する代わりに、私と他のすべての Windows アプリケーションおよびアプリ開発者のために、この問題に対する明確かつ最新の答えを見つけてください。ありがとうございました!