21

! 簡単にするために、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 アプリケーションおよびアプリ開発者のために、この問題に対する明確かつ最新の答えを見つけてください。ありがとうございました!

4

1 に答える 1

11

ストアに入るアプリケーションについて話している場合、いかなるメカニズムを介したローカル システムとの通信も許可されません。アプリの開発を容易にするために、一部のデバッグ シナリオではローカル システムとの通信がサポートされています。

ファイルまたはプロトコル ハンドラーを使用して Windows ストア アプリケーションからデスクトップ アプリケーションを起動できますが、直接通信することはできません。

繰り返しますが、WinRT とデスクトップ間の通信は、リリースされた Windows ストア アプリケーションでは許可されていません。2 つの環境間の通信は、デバッグでのみ許可されます。

PG は、セキュリティから WinRT ライフサイクルに至るまで、通信が許可されない理由をさまざまな場所に投稿しています (つまり、アプリが中断されます - リソース、ソケット、リモート アプリなどに関してどのように処理されますか? -- たくさん障害点の数) およびストア アプリは外部プログラムに依存できないという事実 (つまり、アプリを実行するにはローカル デスクトップ アプリ/サービスが必要ですが、アプリ/サービスをインストールするにはどうすればよいですか? に統合することはできませんStore アプリ. 別の Store デスクトップ アプリ エントリを提供することもできますが、それはユーザー エクスペリエンスが低下します)。

于 2012-09-09T19:50:35.903 に答える