[解決済み] Windows 8のMetroアプリは、同じマシン上のバックエンドデスクトップアプリとどのように通信することができますか?
質問
Windows 8 の新しい Metro スタイルのアプリケーションを使用して UI フロントエンドを構築し、同じローカル マシンのデスクトップで実行されている .NET アプリケーション (例: Windows サービス アプリ) と通信させたいと考えています。
メトロ アプリとデスクトップ アプリの間で利用可能なプロセス間通信の形態は何ですか?
Visual Studio チームの Pavel Minaev が、コメントでいくつかの初期情報を提供してくれたことに感謝します (引用)。
Martyn Lovell によると、そのための意図的なメカニズムはありません。 また、そのために使用できるものは意図的に制限されています。 たとえば、名前付きパイプは存在しませんし、メモリ マップされたファイルも存在しません。 ソケット(サーバソケットを含む)はありますが、接続先が ローカルホストに接続する場合、同じアプリにしか接続できない。通常の 共有フォルダ(ドキュメント、ピクチャなど)にある通常のファイルを使用することができます。 しかし、これはポーリングが必要で、ユーザーから見えるかなり粗雑なハックです。 ユーザーから見えるようになります。-- Pavel Minaev コメント この問題
通常のアプローチに失敗したので、何らかの通信を行うために Web サービスを使用するか、データベースに読み書きすることを考えていましたが、プロセスが同じマシンで実行されている場合、どちらもやりすぎのように思われます。
私がここで試みていることは、意味があることなのでしょうか。デスクトップで実行されている既存のサービスのフロントエンド UI として、メトロ アプリの必要性を理解することができます。あるいは、デスクトップ上で実行されるフロントエンド UI (つまり、非メトロ アプリ) に WPF を使用する方がよいのでしょうか。
どのように解決するのですか?
私は今、既存のプロジェクトをWin8に移植しています。これは、NamedPipes WCF を介して相互に通信する Windows サービスとトレイ アプリケーションで構成されています。すでにご存知のように、Metro は名前付きパイプをサポートしていません。私は、全二重接続のためにTcpBindingを使うことにしました。
この投稿 には、どのような機能がサポートされているかが書かれています。
Metroクライアントが利用できるWCFサーバーのサンプルは以下の通りです。 ここで .
また、Metroでは同期型のWCFを使用できないことも覚えておいてください。その場合は タスク -ベースのラッパーを使用する必要があります。
質問ありがとうございました。私にとっては良い出発点でした :)
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] C#のWindowsコンソールアプリで現在行を更新するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み] Windows 8 ランタイム(WinRT / Windowsストアアプリ / Windows 10 ユニバーサルアプリ)とSilverlightやWPFの比較はどうですか?[クローズド]