Использование службы приложений между загруженным UWP и консольным приложением без проекта упаковки приложения - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть сценарий Enterprise LOB, где мне нужно установить связь между моим приложением Sideloaded UWP и несколькими консольными приложениями, разработанными сторонними разработчиками. Внутренне эти консольные приложения будут взаимодействовать с COM-портами и аппаратными устройствами.

Можно ли использовать службу приложений для связи между UWP и консольным приложением из пакета?

Более того, связь должна быть двухсторонней и асинхронной, ожидаемый поток:

  1. UWP -start-console-app-Ожидайте-нет-ответа-> Консоль Приложение (Как выполнить этот шаг без настольного моста?)
  2. UWP <-send-data-ожидайте-нет-ответа- <strong>Консольное приложение
  3. UWP -send-data-Ожидайте-нет-ответа-> Консольное приложение

Я уже ссылался на ссылки ниже, но в соответствии для них "Windows Application Packaging Project" является обязательным.

Пожалуйста, предложите, если есть и другие альтернативы.

РЕДАКТИРОВАТЬ:

Возможно начать -контактные консольные приложения из UWP, используя 2 метода:

  1. Создайте пакет с помощью консольного приложения, которое может запускать любые другие консольные приложения. См .: { ссылка }
  2. Запустите консольное приложение через URI протокола. Создайте протокол URI для консольного приложения: https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767914%28v%3dvs.85%29 ИЛИ https://www.meziantou.net/registering-an-application-to-a-uri-scheme-using-net.htm

Однако невозможно установить связь между Пакет Консольное приложение и UWP через Сервис приложений. Несмотря на то, что консольное приложение имеет ссылку на Microsoft. Windows .SDK.Contracts пакет nuget и может обращаться к API AppServiceConnection, так как класс AppServiceConnection имеет объект DualApiPartitionAttribute. Соединение не может быть установлено с ошибкой AppServiceUnavailable.

Следовательно, сейчас я пробую новое решение с вариантом 1 сверху, как указано здесь: https://docs.microsoft.com/answers/questions/1166/how-uwp-can-communicate-with-windows-service.html?childToView=1211#answer -1211

Резервные параметры, требующие изучения:

  • WCF Http / NamedPipes
  • UWP запускает консольное приложение, консольное приложение отвечает, вызывая Launch по протоколу URI (конечно, UWP необходимо зарегистрироваться протокол)

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Я наконец-то закончил со многими обходными путями, хотя я все еще ищу лучшие решения. Мой сценарий LOB является своего рода особым случаем (см. Вопрос) и отлично работает для меня, но для других я не рекомендую это решение.

Ограничения при решении:

  • Приложение должно быть загружено отдельно, поскольку оно использует ограниченную ответственность (runFullTrust)
  • Чтобы сторонний exe-файл мог использовать Launcher.LaunchUriAsyn c, ему необходимо импортировать Microsoft. Windows .SDK. Пакет контрактов nuget (см. , это и , это )
  • Связь, скорее, приложение из приложения Инициирование, конечно, только один из способов:
    • UWP просто запускает запуск и передает параметры
    • Консольные приложения тоже могут запускать UWP только с использованием URI протокола
  • .exe. Имя и каталог третьей стороны должны быть известны до того, как они будут
    • В качестве обходного пути .exe также может быть запущен с использованием протокола, но для этого требуется .exe, чтобы сделать запись реестра
  • Обрабатывать сценарий таймаута и сбоя ios самостоятельно

* 1 033 *UWP - out-of-package exe communication

0 голосов
/ 13 февраля 2020

AppServiceConnection нельзя использовать для установления связи sh между консольным приложением вне пакета и UWP, см. Обновленный вопрос.


Из комментариев я думаю, что это может быть достигнуто, но это не должен быть через COM-порт, но для установки sh AppServiceConnection.

Пожалуйста, обратитесь к этому документу , чтобы создать AppService для приложений UWP. Если ваше консольное приложение может создать AppServiceConnection, то вы можете установить sh соединение с приложением UWP и передать данные.

AppServiceConnection - это двусторонняя связь. После установления соединения консольное приложение и приложение UWP могут отправлять информацию друг другу.

...