Подтвердить что ты не робот

Связь между приложением Windows Store и встроенным настольным приложением

! Для упрощения вещей я буду ссылаться на приложения Windows Store (также известные как Metro или Modern UI) как "приложение" и на обычные настольные приложения как "приложение"!

Я считаю, что это все еще один из самых неясных, но важных вопросов, касающихся разработки приложений для разработчиков, которые уже создали приложения на рынке: Как управлять связью приложений и приложений в системе Windows 8? (пожалуйста, не начинайте дискуссию о принципах - так много случаев, когда это действительно необходимо!)

Я в основном читаю hundrets статей за последние несколько дней, но до сих пор остается неясным, как начать делать это с самого начала. В основном потому, что я нашел несколько противоречивых сведений. С моим вопросом здесь я хотел бы вернуться к этой проблеме с точки зрения окончательных возможностей Windows 8.

Данная ситуация:

  • Приложение и приложение запускаются в одной системе
  • Связь 1:1
  • Приложение является родным (написано на Delphi)
  • Администратор или, если требуется, для приложения доступны даже системные привилегии
  • В 90% случаев использования приложение запрашивает действие, которое должно выполняться приложением, и получает некоторый текстовый результат. Приложение не должно быть оставлено или заморожено для этого!
  • В 10% приложение выполняет действие (инициированное каким-либо событием) и сообщает об этом приложению - результатом может быть: отображение определенной информации о плитке или в уже запущенном и активном приложении или, если возможно, запуск приложения/на передний план.

Теперь "простой" вопрос заключается в том, как достичь этого?

  • Доступен ли доступ к локальному веб-серверу сейчас? (Я считаю, что это было не долгое время, но теперь с момента выпуска)
  • WCF? (- > По-видимому MS больше не рекомендует больше)
  • HTTP-запросы на локальном сервере REST/SOAP?
  • API синдикации WinRT? (другая форма доступа к веб-сервису с ответами RSS/atom)
  • WebSockets (например MessageWebSocket)?
  • Некоторая другая форма связи TCP/IP?
  • Обмен текстовым файлом для ввода и вывода (на самом деле просто думать об этом больно, но, по крайней мере, возможность MS не может блокировать...)
  • Именованные каналы не разрешены, правильно?

Есть несколько дискуссий по этой теме здесь, на SO, однако большинство из них не являются современными, поскольку MS сильно изменилась до выпуска окончательной версии Windows 8. Вместо того, чтобы смешивать старую и новую информацию, d хотел бы найти определенный и текущий ответ на эту проблему для меня и для всех других разработчиков приложений и приложений Windows. Спасибо!

4b9b3361

Ответ 1

Если вы говорите о приложении, входящем в магазин, связь с локальной системой через какой-либо механизм не допускается. Связь с локальной системой поддерживается в некоторых сценариях отладки, чтобы упростить разработку приложений.

Вы можете запускать настольные приложения из приложений Windows Store с помощью обработчиков файлов или протоколов, но прямой связи нет.

Итак, чтобы повторить точку... связь между WinRT и рабочим столом не разрешена для выпущенных приложений Windows Store. Связь между двумя средами разрешена только при отладке.

PG опубликовал в разных местах причины того, почему связь не разрешена, начиная от безопасности и заканчивая жизненным циклом WinRT (т.е. приложение приостанавливается). Как это происходит с обработкой ресурсов: сокетов, удаленных приложений и т.д. - много точек отказа) и тот факт, что приложения Store не могут иметь зависимости от внешних программ (т.е. мне нужно ваше локальное настольное приложение/сервис для запуска приложения, но как я могу установить ваше приложение/сервис? интегрируйте в приложение "Магазин". Вы можете предоставить еще одну запись в приложении "Настольный компьютер", но это плохой опыт пользователей.) Конечно, это резюме высокого уровня.