Вопрос по communication, windows, windows-runtime, microsoft-metro – Связь между приложением Windows Store и собственным настольным приложением

21

! For the sake of simplifying things I will refer to Windows Store applications (also known as Metro or Modern UI) as "app" and to common desktop applications as "application" !

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

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

Given situation:

App and application run on same system 1:1 communication Application is native (written in Delphi) Administrator or if required even system privileges are available for the application In 90% of the use cases the app requests an action to be performed by the application and receives some textual result. The app shouldn't be left nor frozen for this! In 10% the application performs an action (triggered by some event) and informs the app - the result might be: showing certain info on the tile or in the already running and active app or if possible running the app / bringing it to the foreground.

Now the "simple" question is, how to achieve this?

Is local webserver access actually allowed now? (I believe it wasn't for a long time but now is since the final release) WCF? (-> apparently MS doesn't recommend that anymore) HTTP requests on a local REST/SOAP server? WinRT syndication API? (another form of webservice access with RSS/atom responses) WebSockets (like MessageWebSocket)? Some other form of TCP/IP communication? Sharing a text file for in- and output (actually simply thinking of this hurts, but at least that's a possibility MS can't block...) Named Pipes are not allowed, right?

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

@ Гарри Хорошо, я думаю, что нет никакого способа испытать это ... На самом деле очень грустно видеть, как неразумно MS относится ко всему этому сценарию объединения приложений и приложений. С одной стороны, они пытаются объединить оба мира в одном устройстве, указывая на то, что на самом деле это лучшая причина для выбора планшета Win8. С другой стороны, они делают все, чтобы максимально разделить эти миры. Насколько это глупо? Бьет меня CodeX
Я бы тоже не рассчитывал на возможность связи через локальный файл. AFAIK, WinRT и настольный компьютер в настоящее время используют один и тот же токен безопасности, но система с разделенными токенами, подобная UAC, будет разумной и вполне может быть внедрена в будущих версиях Windows. (NB: I 'mspeculating здесь это не основано на полученной информации.) Кроме того, если MS проводит какой-либо аудит приложений Магазина Windows, вас не выгонят, как только они заметят, что вы делаете? Harry Johnston

Ваш Ответ

1   ответ
11

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

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

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

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

Поведение должно быть таким же - одно исключение - возврат по кругу, который можно включить вручную. Если вы хотите проверить это, не включайте его. Если все остальное не удается, разверните пакет, а просто дайте VS F5 развернуться.
@ Код X Я уверен на 98,72356%. :) Если изменения не попали в RTM, который я пропустил, это всегда было позицией PG в течение долгого времени. Понятно, что есть много полезных сценариев, но я не понимаю, как общаться. Вы можете найти некоторые обсуждения в интернете от PG о том, почему они это сделали. Я отредактировал ответ выше, чтобы включить некоторые причины. Извините, что это не тот ответ, который вы хотели, я передам отзыв для рассмотрения в будущих выпусках.
@DominicHopton правильно для файлов, хотя это не совсем прямая связь :) AFAIK именованные каналы не работают. Это основано на заявлениях, сделанных PG ранее. Возможно, что-то изменилось, но я не знаю никаких изменений.
Это можно сделать с помощью файла, который не заблокирован. Не сказать, что это красиво, но это возможно. Я также думаю, что именованная труба будет работать, но я не уверен в этом.
Джефф, насколько ты уверен в этом? Смешно то, что никто не может испытать это, потому что поведение, очевидно, отличается для разработки и установленных приложений из магазина ... И так как есть много полезных сценариев использования для этого сценария, говоря "Не возможно" это в принципе не решение. В конце разработчики действительно обойдут это, передавая команды и результаты через текстовые файлы в localStorage. Это действительно единственное решение, которое MS позволит? CodeX

Похожие вопросы