Microsoft apps services что это такое
Перейти к содержимому

Microsoft apps services что это такое

  • автор:

Что такое Microsoft AppSource?

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

Каталог Microsoft AppSource включает в себя приложения saaS, решения, созданные для Dynamics 365, Microsoft 365, Power BI, Power Apps и консультационные услуги от партнеров Майкрософт.

Доступ к каталогу продуктов AppSource по AppSource.Microsoft.com или через интерфейс в microsoft 365, Dynamics 365 и Microsoft Power Platform. Решения из Microsoft AppSource также могут быть доступны от торговых посредников Майкрософт в программе поставщик облачных решений.

Screenshot that displays the Microsoft AppSource landing page.

В Microsoft AppSource можно найти:

  • Приложения: решения, адаптированные к широкому спектру отраслей, категорий и бизнес-потребностей
  • Консультационные услуги: предварительно упаковаемые службы, которые предоставляют оценки, брифинги, реализации, доказательства концепции и семинары для решений Майкрософт
  • Профили партнеров Майкрософт: профили доверенных партнеров Майкрософт, которые помогают вашей организации цифрово преобразовывать и достигать бизнес-целей быстрее с помощью служб майкрософт

Работа в продукте AppSource

Вы также можете получить доступ к предложениям Microsoft AppSource через продукты Microsoft 365, Dynamics 365 и Power Platform. В следующем примере показано, как получить доступ к надстройкам Microsoft AppSource Power BI из меню файла Power BI.

Screenshot that highlights the option to import Power BI visual from AppSource.

Этот параметр открывает окно, в котором можно искать надстройки Power BI по имени, фильтровать по категориям и сортировать по таким критериям, как популярность, рейтинги и сертифицированные Power BI.

Общие сведения о Среде службы приложений

Среда службы приложений — это компонент службы приложений Azure, предоставляющий полностью изолированную и выделенную среду для безопасного выполнения приложений службы приложений в большом масштабе.

В этой статье рассматриваются функции, преимущества и варианты использования среды службы приложений версии 3, которые используются с планами службы приложений (Изолированный (версия 2)»).

В среде службы приложений можно размещать:

  • веб-приложения Windows;
  • веб-приложения Linux;
  • Контейнеры Docker (Windows и Linux)
  • Функции
  • Приложения логики (стандарт)

Среды службы приложений подходят для рабочих нагрузок приложений, требующих выполнения указанных ниже условий:

  • Большой масштаб.
  • изоляция и безопасный доступ к сети;
  • высокий уровень использования памяти.
  • Большое количество запросов в секунду (RPS). Можно создавать несколько сред службы приложений в одном или в нескольких регионах Azure. Благодаря этой гибкости среды службы приложений идеально подходят для горизонтально масштабируемых уровней приложений без учета состояний, с высокими требованиями к RPS.

В среде службы приложений можно размещать приложения только одного клиента, и это делается в одной из виртуальных сетей. Клиенты могут детально управлять входящим и исходящим сетевым трафиком приложений, а приложения — создавать высокоскоростные безопасные подключения к локальным корпоративным ресурсам через VPN.

Сценарии использования

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

  • Внутренние бизнес-приложения.
  • Приложения, которым требуется более 30 экземпляров плана службы приложений.
  • Система с одним клиентом для удовлетворения требований внутреннего соответствия или безопасности.
  • Хостинг изолированных от сети приложений.
  • Многоуровневые приложения.

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

Выделенная среда

Среда службы приложений Azure — это развертывание службы приложений Azure для одного клиента в виртуальной сети Azure.

Приложения размещаются в планах службы приложений, которые создаются в Среде службы приложений. План службы приложений — это фактически профиль обеспечения для узла приложений. При горизонтальном масштабировании плана службы приложений создаются дополнительные узлы приложений со всеми приложениями в этом плане службы приложений на каждом узле. В одной среде службы приложений версии 3 может быть в общей сложности до 200 экземпляров планов службы приложений во всех планах службы приложений вместе взятых. В отдельном изолированном плане службы приложений (lv2) может быть до 100 экземпляров.

При развертывании на выделенном оборудовании (узлах) действует ограничение по масштабированию всех планов службы приложений только до количества ядер в этой среде. В среде службы приложений, развернутой на выделенных узлах, доступно 132 виртуальных ядра. I1v2 использует два виртуальных ядра, в I2v2 используется четыре виртуальных ядра, а I3v2 — восемь виртуальных ядер на один экземпляр.

Поддержка виртуальной сети

Среда службы приложений — это развернутая служба приложений Azure в подсети виртуальной сети. При развертывании приложения в среде службы приложений это приложение размещается во входящем адресе, назначенном для среды службы приложений. Если среда службы приложений развертывается с внутренним виртуальным IP-адресом (VIP), в качестве входящего адреса для всех приложений будет использоваться адрес в подсети среды службы приложений. Если среда службы приложений развертывается с внешним виртуальным IP-адресом, входящий адрес будет представлять собой адрес в Интернете, а ваши приложения будут находиться в общедоступной системе доменных имен.

Количество адресов, используемых средой службы приложений версии 3 в ее подсети, может отличаться в зависимости от числа экземпляров и объема трафика. Некоторые роли инфраструктур автоматически масштабируются в зависимости от количества планов службы приложений и нагрузки. Рекомендуемый размер подсети сред службы приложений версии 3 — это /24 блок бесклассовой междоменной маршрутизации (CIDR), который содержит 256 адресов, поскольку такой размер поддерживает размещение среды службы приложений версии 3, которая масштабируется до заданного предела.

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

Многоклиентская версия Службы приложений Azure содержит многочисленные функции, благодаря которым приложения могут подключаться к различным сетям. Благодаря этим сетевым функциям ваши приложения могут выполнять те же функции, как если бы они были развернут в виртуальной сети. Приложениям в среде службы приложений версии 3 не требуется добавлять конфигурацию в виртуальную сеть.

Преимущество использования среды службы приложений вместо мультитенантной службы заключается в том, что все элементы управления доступом к сети для среды службы приложений приложений являются внешними по отношению к конфигурации приложения. Если используются приложения в многоклиентской службе, необходимо включить функции для каждого отдельного приложения и использовать управление доступом на основе ролей (RBAC) или политику, чтобы не допустить изменений конфигурации.

Отличия функций

Среда службы приложений версии 3 имеет следующие отличия от предыдущих версий:

  • В виртуальной сети клиента нет зависимостей от сети. Вы можете обеспечить защиту всего входящего и исходящего трафика и маршрутизацию исходящего трафика.
  • Можно развернуть среду службы приложений версии 3, для которого включена избыточность между зонами. Избыточность между зонами задается только во время создания и только в регионах, где все зависимости среды службы приложений версии 3 являются избыточными между зонами. В этом случае каждый план Службы приложений в Среде службы приложений должен иметь не менее трех экземпляров, чтобы их можно было распределять по зонам. Дополнительные сведения см. в разделе Переход Среды службы приложений на использование поддержки зоны доступности.
  • Можно развернуть среду службы приложений версии 3 в выделенной группе узлов. Развертывания в группах узлов не избыточны между зонами.
  • Масштабирование выполняется гораздо быстрее, чем с помощью среды службы приложений версии 2. Хотя масштабирование происходит гораздо быстрее, но не мгновенно, как в многоклиентской службе.
  • Регулировка масштабирования внешнего интерфейса больше не требуется. Внешние интерфейсы среды службы приложений версии 3 автоматически масштабируются в соответствии с потребностями и развертываются на лучших узлах.
  • Масштабирование больше не блокирует другие операции масштабирования в пределах среды службы приложений версии 3. Только одна операция масштабирования может действовать для сочетания ОС и размера. Например, пока малый план службы приложений Windows масштабировался, вы могли запустить для одновременного выполнения в среде Windows операцию масштабирования или еще что-нибудь.
  • Можно получить доступ к приложениям в среде службы приложений версии 3 с внутренним виртуальным IP-адресом в различных областях глобального пиринга. Такой доступ не поддерживался в более ранних версиях.

Некоторые функции, которые были доступны в более ранних версиях среды службы приложений, недоступны в среде службы приложений версии 3. Например, вы больше не сможете выполнять следующие действия:

  • Выполните операцию резервного копирования и восстановления в учетной записи хранения за брандмауэром.
  • Доступ к конечной точке FTPS с помощью суффикса личного домена.

Цены

В среде службы приложений версии 3 модель ценообразования зависит от типа развернутой среды службы приложений. Существуют три модели ценообразования:

  • Среды службы приложений версии 3: если среда службы приложений является пустой, взимается плата, как если бы имелся один экземпляр Windows I1v2. Плата за один экземпляр не взимается дополнительно и применяется только в том случае, если среда службы приложений является пустой.
  • Избыточная межу зонами среда службы приложений версии 3: взимается минимальная плата за девять экземпляров. При наличии девяти или более экземпляров плана службы приложений дополнительная плата за поддержку зон доступности не взимается. При наличии менее девяти экземпляров (любого размера) для планов Службы приложений в среде службы приложений с избыточностью между зонами плата за разницу между девятью и числом выполняющихся экземпляров выставляется как за дополнительные экземпляры I1v2 для Windows.
  • Выделенный узел среды службы приложений версии 3: если развернут выделенный узел, взимается плата за два выделенных узла в соответствии с нашей моделью ценообразования, когда вы создаете среду службы приложений версии 3, а затем по мере масштабирования используется специальный тариф «Изолированный (версия 2)» за каждое ядро. I1v2 использует два виртуальных ядра, в I2v2 используется четыре виртуальных ядра, а I3v2 — восемь виртуальных ядер на один экземпляр.

Цены на зарезервированные экземпляры для ценовой категории «Изолированный (версия 2)» доступны и описаны в статье Как скидки при бронировании применяются к службе приложений Azure. Цены, в том числе на зарезервированные экземпляры, можно просмотреть на странице Цены на Службу приложений в разделе «План «Изолированный (версия 2)».

Регионы

Среда службы приложений версии 3 доступна в следующих регионах:

Общедоступное облако Azure:

Регион Поддержка одной зоны Поддержка зоны доступности Поддержка одной зоны
Среда службы приложений, версия 3 Среда службы приложений, версия 3 Среда службы приложений версии 1/v2
Центральная Австралия
Центральная Австралия 2 ✅*
Восточная Австралия
Юго-Восточная часть Австралии
Южная Бразилия
Юго-Восточная Бразилия
Центральная Канада
Восточная Канада
Центральная Индия
Центральная часть США
Восточная Азия
Восточная часть США
восточная часть США 2
Центральная Франция
Южная Франция
Северная Германия
Центрально-Западная Германия
Северная Италия ✅**
Восточная Япония
Западная Япония
Западная Индия Jio
Республика Корея, центральный регион
Республика Корея, южный регион
Центрально-северная часть США
Северная Европа
Восточная Норвегия;
Западная Норвегия
Центральная Польша
Центральный Катар ✅** ✅**
Северная часть ЮАР
Западная часть ЮАР
Центрально-южная часть США
Южная Индия
Юго-Восточная Азия
Центральная Швеция
Северная Швейцария
Западная Швейцария
Центральная часть ОАЭ.
Северная часть ОАЭ;
южная часть Соединенного Королевства
западная часть Соединенного Королевства
центрально-западная часть США
Западная Европа
Западная Индия ✅*
западная часть США
западная часть США 2
Западная часть США — 3

* Ограниченная доступность и поддержка выделенных развертываний узлов не поддерживается.
** Чтобы узнать больше о зонах доступности и доступных службах поддержки в этих регионах, обратитесь к своему представителю по продажам или клиенту Майкрософт.

Azure для государственных организаций:

Регион Поддержка одной зоны Поддержка зоны доступности Поддержка одной зоны
Среда службы приложений, версия 3 Среда службы приложений, версия 3 Среда службы приложений версии 1/v2
Центральный регион US DoD
Восточный регион US DoD
US Gov (Аризона)
US Gov (Айова)
US Gov (Техас)
US Gov (Вирджиния)

Microsoft Azure, управляемый 21Vianet:

Регион Поддержка одной зоны Поддержка зоны доступности Поддержка одной зоны
Среда службы приложений, версия 3 Среда службы приложений, версия 3 Среда службы приложений версии 1/v2
Восточный Китай 2
Восточный Китай 3
Северный Китай 2
Северный Китай 3

Место расположения данных в регионе

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

Среда службы приложений версии 2

Доступно три версии среды службы приложений: «Среда службы приложений версии 1», «Среда службы приложений версии 2» и «Среда службы приложений версии 3». Сведения в этой статье приведены для среды службы приложений версии 3. Дополнительные сведения о среде службы приложений версии 2 см. в статье Общие сведения о среде службы приложений версии 2.

Привлечение пользователей с помощью Microsoft Store Services SDK

В Microsoft Store Services SDK есть функции, которые помогают взаимодействовать с клиентами в приложениях универсальная платформа Windows (UWP), например отправлять целевые уведомления в приложения и запускать в ваших приложениях A/B-эксперименты. Этот пакет SDK является расширением Visual Studio 2015 и более поздних версий Visual Studio.

Для отображения рекламы в приложениях UWP используйте Microsoft Advertising SDK вместо Microsoft Store Services SDK. Рекламные библиотеки были перемещены из Microsoft Store Services SDK в Microsoft Advertising SDK. Дополнительные сведения см. в статье Показ рекламы в приложениях.

Сценарии, поддерживаемые Microsoft Store Services SDK

Microsoft Store Services SDK в настоящее время поддерживает следующие сценарии для приложений UWP. Справочную документацию по API см. в справочнике по API пакета Microsoft Store Services SDK.

Сценарий Описание
Проведение экспериментов с A/B-тестированием в приложениях UWP Проводите A/B-тестирование в своем приложении для универсальной платформы Windows (UWP), чтобы оценить эффективность функций на некоторых пользователях перед выпуском этих функций для всех пользователей. После определения эксперимента в Центре партнеров используйте класс StoreServicesExperimentVariation , чтобы получить варианты эксперимента в приложении, используйте эти данные для изменения поведения проверяемой функции, а затем используйте метод LogForVariation для отправки событий просмотра и преобразования в Центр партнеров. Наконец, используйте Центр партнеров для просмотра результатов и управления экспериментом.
Запуск Центра отзывов из приложения UWP Используйте класс StoreServicesFeedbackLauncher в приложении UWP, чтобы направить пользователей windows 10 и Windows 11 в Центр отзывов, где они могут отправлять проблемы, предложения и предложения. Затем вы сможете проанализировать все эти данные в отчете об отзывах в Центре партнеров.
Настройка приложения UWP для получения push-уведомлений Центра партнеров Используйте класс StoreServicesEngagementManager в приложении UWP, чтобы зарегистрировать приложение для получения целевых push-уведомлений, отправляемых клиентам с помощью Центра партнеров.
Регистрация пользовательских событий в приложении UWP для отчета об использовании в Центре партнеров Используйте класс StoreServicesCustomEventLogger в приложении UWP, чтобы регистрировать пользовательские события, связанные с вашим приложением, в Центре партнеров. Затем просмотрите общее количество вхождений для пользовательских событий в разделе Пользовательские событияотчета об использовании в Центре партнеров.

Предварительные требования

Microsoft Store Services SDK предъявляет следующие требования.

  • Visual Studio 2015 или более поздняя версия.
  • Инструменты Visual Studio для универсальных приложений для Windows, установленные в вашей версии Visual Studio.

Установка пакета SDK

Существует два варианта установки Microsoft Store Services SDK на компьютер разработки.

  • Установщик MSI Пакет SDK можно установить с помощью установщика MSI, доступного здесь.
  • Пакет NuGet Пакет SDK можно установить как пакет NuGet.

Корпорация Майкрософт периодически выпускает новые версии пакета Microsoft Store Services SDK для повышения производительности и расширения возможностей. Если у вас уже есть проекты, в которых используется этот пакет SDK, и вы хотите использовать его последнюю версию, скачайте и установите последнюю версию SDK на свой компьютер разработки.

Установка с помощью MSI

Установка Microsoft Store Services SDK с помощью установщика MSI.

  1. Закройте все экземпляры Visual Studio.
  2. Если вы ранее устанавливали Microsoft Store Engagement and Monetization SDK, Universal Ad Client SDK или расширение Ad Mediator, теперь необходимо удалить эти версии пакетов SDK. Также можно открыть окно командной строки и выполнить эти команды для удаления всех более ранних версий пакетов рекламных SDK, которые могли быть установлены вместе с Visual Studio, но, возможно, не отображаются в списке установленных программ на компьютере:

MsiExec.exe /x MsiExec.exe /x MsiExec.exe /x

В противном случае, если вы используете пакет SDK в первый раз в своем проекте, теперь вы готовы добавить ссылку на сборку в свой проект.

Установка с помощью NuGet

Установка библиотек Microsoft Store Services SDK с помощью NuGet.

  1. Закройте все экземпляры Visual Studio.
  2. Если вы ранее устанавливали Microsoft Store Engagement and Monetization SDK, Universal Ad Client SDK или расширение Ad Mediator, теперь необходимо удалить эти версии пакетов SDK. Также можно открыть окно командной строки и выполнить эти команды для удаления всех более ранних версий пакетов рекламных SDK, которые могли быть установлены вместе с Visual Studio, но, возможно, не отображаются в списке установленных программ на компьютере:

MsiExec.exe /x MsiExec.exe /x MsiExec.exe /x

Примечание Если ваш проект уже содержит ссылки на библиотеки из предыдущей установки пакета SDK с помощью MSI, удалите эти ссылки из проекта. Рядом с этими ссылками будут расположены предупреждающие значки, поскольку библиотеки, на которые они ссылаются, были удалены ранее.

Примечание Если в окне Вывод содержится ошибка Install-Package, указывающая, что заданный путь слишком длинный, вам может потребоваться настроить NuGet, чтобы извлечь пакеты в альтернативное расположение с более коротким путем, чем расположение по умолчанию. Для этого добавьте значение repositoryPath в файл nuget.config на компьютере и задайте ему более короткий путь к папке, куда можно извлечь пакеты NuGet. Дополнительные сведения см. в этой статье в документации NuGet. Кроме того можно попробовать переместить проект Visual Studio в другую папку с более коротким путем. Проблема также может быть вызвана слишком длинным путем к глобальным пакетам. В этом случае добавьте значение в globalPackagesFolder файл nuget.config.

В противном случае, если вы используете пакет SDK в первый раз в своем проекте, теперь вы готовы добавить ссылку на сборку в свой проект.

Добавьте ссылку на сборку в проект

После установки Microsoft Store Services SDK с помощью установщика MSI или NuGet следуйте этим инструкциям для добавления ссылок на сборку SDK в свой проект UWP.

    Откройте проект в Visual Studio.

Примечание Если ваш проект является приложением JavaScript и направлен на работу на Любом ЦП, обновите его, чтобы он использовал результаты сборки, предназначенные для определенной архитектуры (например, x86).

Если вы установили библиотеки пакета SDK через NuGet, проект будет содержать ссылку на Microsoft.Services.Store.Engagement. Ссылка на Microsoft.Services.Store.Engagement представляет пакет NuGet (а не библиотеки в нем), и вы можете проигнорировать ее.

Понимание пакетов платформы в SDK

Библиотека Microsoft.Services.Store.Engagement.dll в Microsoft Store Services SDK настроена как пакет платформы. Эта библиотека содержит API в пространстве имен Microsoft.Services.Store.Engagement.

Поскольку библиотека представляет собой пакет платформы, это означает, что после установки пользователем версии вашего приложения, которое применяет эту библиотеку, библиотека будет автоматически обновляться на устройстве пользователя через Центр обновления Windows, когда мы опубликуем новую версию библиотеки с исправлениями и улучшенной производительностью. Это позволяет гарантировать, что ваши клиенты всегда будут иметь последнюю доступную версию библиотеки на своих устройствах.

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

Связанные темы

  • Справочник по API пакета Microsoft Store Services SDK
  • Проведение экспериментов с использованием A/B-тестирования
  • Запуск Центра отзывов из приложения
  • Настройка приложения для получения push-уведомлений Центра партнеров
  • Ведение журнала пользовательских событий для Центра партнеров

Создание и использование службы приложений

Списки кода в этом разделе относятся только к C#. Пример приложения службы приложений на C++/WinRT , а также C# см. в разделе Пример приложения службы приложений.

Службы приложений — это приложения UWP, которые могут предоставлять службы другим приложениям UWP. Это похоже на веб-службы на устройстве. Служба приложения выполняется как фоновой задачи в приложении узла и обеспечить его службы другим приложениям. Например служба приложения может предоставить службу сканер штрих-кода, которая может использовать другие приложения. Или корпоративный набор приложений может использовать общую службу проверки орфографии, которая доступна всем приложениям в наборе. Службы приложений позволяют создавать службы без пользовательского интерфейса, которые приложения могут вызывать на одном устройстве и, начиная с Windows 10 версии 1607, на удаленных устройствах.

Начиная с Windows 10 версии 1607 можно создавать службы приложения, работающие в том же процессе, что и приложение узла. В этой статье основное внимание уделяется созданию и использованию служб приложения, которые выполняются в отдельном фоновом процессе. Подробнее о службах приложения, работающих в том же процессе, что и ведущее приложение, см. в разделе Преобразование службы приложения для запуска в одном процессе с ее поставщиком.

Создание проекта поставщика службы приложений

В этой инструкции для простоты мы создадим универсальное решение.

  1. В Visual Studio 2015 или более поздней версии создайте проект приложения UWP и назовите его AppServiceProvider.
    1. Выберите Файл > Новый > проект.
    2. В диалоговом окне Создание проекта выберите Пустое приложение (универсальное приложение Для Windows) C#. Это приложение будет предоставлять службу приложения другим приложениям UWP.
    3. Нажмите кнопку Далее, а затем присвойте проекту имя AppServiceProvider, выберите для него расположение и нажмите кнопку Создать.

    Добавление расширения службы приложений в Package.appxmanifest

    В проекте AppServiceProvider откройте файл Package.appxmanifest в текстовом редакторе:

    1. Щелкните его правой кнопкой мыши в Обозреватель решений.
    2. Выберите Открыть с помощью.
    3. Выберите Редактор XML (текст).

    Добавьте в элемент следующее AppService расширение. В этом примере показано, как объявить службу com.microsoft.inventory и указать, что приложение является поставщиком службы приложений. Сама служба будет реализована в виде фоновой задачи. Проект приложения службы приложений предоставляет службу другим приложениям. Для имени службы мы рекомендуем использовать обратное доменное имя.

    Обратите внимание, что xmlns:uap4 префикс пространства имен и uap4:SupportsMultipleInstances атрибут действительны только в том случае, если вы используете Windows SDK версии 10.0.15063 или более поздней. Их можно удалить, если используется более ранняя версия SDK.

    Пример приложения службы приложений на C++/WinRT , а также C# см. в разделе Пример приложения службы приложений.

    Атрибут Category определяет это приложение как поставщик службы приложений.

    Атрибут EntryPoint идентифицирует класс с указанием пространства имен, который реализует службу, которую мы реализуем далее.

    Атрибут SupportsMultipleInstances указывает, что при каждом вызове службы приложений она должна выполняться в новом процессе. Это не обязательно, но доступно, если вам нужны эти функции и предназначены для пакета SDK 10.0.15063 (Windows 10 Creators Update) или более поздней версии. В качестве префикса следует использовать пространство имен uap4 .

    Создание службы приложений

    1. Служба приложений будет реализована в виде фоновой задачи. Это позволяет приложению переднего плана вызывать службу приложений в другом приложении. Чтобы создать службу приложений в качестве фоновой задачи, добавьте новый проект компонента среда выполнения Windows в решение (Файл > Добавить > новый проект) с именем MyAppService. В диалоговом окне Добавление нового проекта выберите Установленные > компоненты Visual C# > среда выполнения Windows (универсальные приложения Windows).
    2. В проекте AppServiceProvider добавьте ссылку между проектами в новый проект MyAppServiceОбозреватель решений щелкните правой кнопкой мыши проект >AppServiceProvider Add Reference Projects Solution (Добавить>эталонные>проекты>) и выберите MyAppService>OK. Этот шаг очень важен: если вы не добавите ссылку, служба приложения не сможет подключиться во время выполнения.
    3. В проекте MyAppService добавьте следующие операторы using в начало файла Class1.cs:
    using Windows.ApplicationModel.AppService; using Windows.ApplicationModel.Background; using Windows.Foundation.Collections; 
    public sealed class Inventory : IBackgroundTask < private BackgroundTaskDeferral backgroundTaskDeferral; private AppServiceConnection appServiceconnection; private String[] inventoryItems = new string[] < "Robot vacuum", "Chair" >; private double[] inventoryPrices = new double[] < 129.99, 88.99 >; public void Run(IBackgroundTaskInstance taskInstance) < // Get a deferral so that the service isn't terminated. this.backgroundTaskDeferral = taskInstance.GetDeferral(); // Associate a cancellation handler with the background task. taskInstance.Canceled += OnTaskCanceled; // Retrieve the app service connection and set up a listener for incoming app service requests. var details = taskInstance.TriggerDetails as AppServiceTriggerDetails; appServiceconnection = details.AppServiceConnection; appServiceconnection.RequestReceived += OnRequestReceived; >private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args) < // This function is called when the app service receives a request. >private void OnTaskCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason) < if (this.backgroundTaskDeferral != null) < // Complete the service deferral. this.backgroundTaskDeferral.Complete(); >> > 
    • Если вызывающий объект находится на переднем плане, время существования службы приложения совпадает со временем существования вызывающей стороны.
    • Если вызывающий объект находится в фоновом режиме, служба приложений получает 30 секунд на выполнение. Активация задержки дает службе пять дополнительных секунд.

    OnTaskCanceled вызывается при отмене задачи. Задача отменяется, когда клиентское приложение удаляет AppServiceConnection, клиентское приложение приостанавливается, операционная система завершает работу или переходит в спящий режим, или ос иссякает ресурсы для выполнения задачи.

    Написание кода для службы приложений

    OnRequestReceived — это место, куда отправляется код для службы приложений. Замените заглушку OnRequestReceived в файле Inventory.csMyAppService кодом из этого примера. Этот код получает индекс складской позиции и передает его в строке команды в службу, чтобы получить название и цену указанной складской позиции. В собственные проекты добавьте код обработки ошибок.

    private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args) < // Get a deferral because we use an awaitable API below to respond to the message // and we don't want this call to get canceled while we are waiting. var messageDeferral = args.GetDeferral(); ValueSet message = args.Request.Message; ValueSet returnData = new ValueSet(); string command = message["Command"] as string; int? inventoryIndex = message["ID"] as int?; if (inventoryIndex.HasValue && inventoryIndex.Value >= 0 && inventoryIndex.Value < inventoryItems.GetLength(0)) < switch (command) < case "Price": < returnData.Add("Result", inventoryPrices[inventoryIndex.Value]); returnData.Add("Status", "OK"); break; >case "Item": < returnData.Add("Result", inventoryItems[inventoryIndex.Value]); returnData.Add("Status", "OK"); break; >default: < returnData.Add("Status", "Fail: unknown command"); break; >> > else < returnData.Add("Status", "Fail: Index out of range"); >try < // Return the data to the caller. await args.Request.SendResponseAsync(returnData); >catch (Exception e) < // Your exception handling code here. >finally < // Complete the deferral so that the platform knows that we're done responding to the app service call. // Note for error handling: this must be called even if SendResponseAsync() throws an exception. messageDeferral.Complete(); >> 

    Обратите внимание, что OnRequestReceived является асинхронным , так как в этом примере мы вызываем метод SendResponseAsync .

    Выполняется отсрочка, чтобы служба пользовалась асинхронными методами в обработчике OnRequestReceived . Это гарантирует, что вызов OnRequestReceived не завершится до тех пор, пока не будет обработано сообщение. SendResponseAsync отправляет результаты вызывающей стороне. SendResponseAsync не сигнализирует о завершении вызова. Это завершение отсрочки, которое сообщает SendMessageAsync о завершении OnRequestReceived . Вызов SendResponseAsync заключен в блок try/finally, так как необходимо завершить отсрочку, даже если SendResponseAsync создает исключение.

    Службы приложений используют объекты ValueSet для обмена информацией. Размер данных, которые можно передать, ограничен только ресурсами системы. Не существует предопределенных параметров, которые можно использовать в ValueSet. Вам необходимо решить, какие значения параметров вы будете использовать для определения протокола для службы приложений. Вызывающий код необходимо писать с учетом этого протокола. В этом примере мы выбрали параметр с именем Command , значение которого указывает, что должна предоставить служба приложений: сведения об имени складской позиции или ее цене. Индекс имени складской позиции хранится в параметре ID . Возвращаемое значение хранится в параметре Result .

    Вызывающему коду возвращается перечисление AppServiceClosedStatus, указывающее на то, был ли вызов службы приложений успешным. Сбой вызова службы приложений может возникнуть, если ОС прерывает конечную точку службы, так как ее ресурсы исчерпаны. Вы можете возвращать дополнительные сведения об ошибке с помощью ValueSet. В этом примере мы используем параметр Status , чтобы возвращать в вызывающий код более подробные сведения об ошибке.

    Вызов SendResponseAsync возвращает ValueSet в вызывающий код.

    Развертывание приложения службы и получение имени семейства пакетов

    Поставщик службы приложений должен быть развернут, прежде чем вы сможете вызвать его из клиента. Его можно развернуть, выбрав Сборка > Развернуть решение в Visual Studio.

    Для его вызова также потребуется имя семейства пакетов поставщика службы приложений. Его можно получить, открыв файл Package.appxmanifest проекта AppServiceProvider в представлении конструктора (дважды щелкните его в Обозреватель решений). Перейдите на вкладку Упаковка , скопируйте значение рядом с полем Имя семейства пакетов и вставьте его в другое место, например Блокнот.

    Написание клиента для вызова службы приложений

    1. Добавьте в решение новый пустой проект универсального приложения для Windows (для этого последовательно выберите пункты Файл > Добавить > Создать проект). В диалоговом окне Добавление нового проекта выберите Установленное > пустое приложение Visual C# > (универсальные приложения Для Windows) и назовите его ClientApp.
    2. В проекте ClientApp добавьте следующий оператор using в начало файла MainPage.xaml.cs:
    using Windows.ApplicationModel.AppService; 
    private AppServiceConnection inventoryService; private async void button_Click(object sender, RoutedEventArgs e) < // Add the connection. if (this.inventoryService == null) < this.inventoryService = new AppServiceConnection(); // Here, we use the app service name defined in the app service // provider's Package.appxmanifest file in the section. this.inventoryService.AppServiceName = "com.microsoft.inventory"; // Use Windows.ApplicationModel.Package.Current.Id.FamilyName // within the app service provider to get this value. this.inventoryService.PackageFamilyName = "Replace with the package family name"; var status = await this.inventoryService.OpenAsync(); if (status != AppServiceConnectionStatus.Success) < textBox.Text= "Failed to connect"; this.inventoryService = null; return; >> // Call the service. int idx = int.Parse(textBox.Text); var message = new ValueSet(); message.Add("Command", "Item"); message.Add("ID", idx); AppServiceResponse response = await this.inventoryService.SendMessageAsync(message); string result = ""; if (response.Status == AppServiceResponseStatus.Success) < // Get the data that the service sent to us. if (response.Message["Status"] as string == "OK") < result = response.Message["Result"] as string; >> message.Clear(); message.Add("Command", "Price"); message.Add("ID", idx); response = await this.inventoryService.SendMessageAsync(message); if (response.Status == AppServiceResponseStatus.Success) < // Get the data that the service sent to us. if (response.Message["Status"] as string == "OK") < result += " : Price = " + response.Message["Result"] as string; >> textBox.Text = result; > 

    Замените имя семейства пакетов в строке this.inventoryService.PackageFamilyName = «Replace with the package family name»; именем семейства пакета проекта AppServiceProvider, которое вы получили выше в разделе Развертывание приложения службы и получение имени семейства пакетов.

    Примечание Вставьте строковый литерал, а не в переменную. Он не будет работать, если вы используете переменную.

    Образец приложения, в котором отображаются данные: Chair price=88.99

    Сначала код устанавливает связь со службой приложения. Подключение останется открытым, пока вы не удалите объект this.inventoryService . Имя службы приложений должно соответствовать атрибуту AppService элемента Name , добавленного в файл Package.appxmanifest проекта AppServiceProvider. В нашем примере поисковый запрос будет выглядеть так: . Создается значение ValueSet с именем message , чтобы указать команду, которую мы хотим отправить в службу приложений. Пример службы приложения будет ждать команду, чтобы указать, какое из 2 действий необходимо выполнить. Мы получаем индекс из текстового поля в клиентском приложении, а затем вызываем службу с Item помощью команды , чтобы получить описание элемента. Затем с помощью команды Price мы получаем цену элемента. Результат используется в качестве текста кнопки. Поскольку AppServiceResponseStatus указывает, удалось ли операционной системе подключаться к службе приложений, мы проверяем Status ключ в методе ValueSet, полученном из службы приложений, чтобы убедиться, что он смог выполнить получения.

  2. Задайте проект ClientApp в качестве запускаемого проекта (щелкните его правой кнопкой мыши в Обозреватель решений>Настроить как запускаемый проект) и запустите решение. Введите число 1 в текстовое поле и нажмите кнопку. Служба возвратит следующие данные: «Chair : Price = 88.99».

Если вызов службы приложений завершается сбоем, проверка в проекте ClientApp следующее:

  1. Убедитесь, что имя семейства пакетов, назначенное подключению к службе инвентаризации, совпадает с именем семейства пакетов приложения AppServiceProvider . См. строку в button_Click с this.inventoryService.PackageFamilyName = «. «; .
  2. В button_Click убедитесь, что имя службы приложений, назначенное подключению к службе инвентаризации, совпадает с именем службы приложений в файле Package.appxmanifestAppServiceProvider. См. this.inventoryService.AppServiceName = «com.microsoft.inventory»; .
  3. Убедитесь, что приложение AppServiceProvider развернуто. (В Обозреватель решений щелкните правой кнопкой мыши решение и выберите Развернуть решение.

Отладка службы приложений

  1. Перед отладкой убедитесь, что решение развернуто, так как перед вызовом службы необходимо развернуть приложение поставщика службы приложений. (Для этого в Visual Studio последовательно выберите пункты Сборка > Развернуть решение).
  2. В Обозреватель решений щелкните правой кнопкой мыши проект AppServiceProvider и выберите Свойства. На вкладке Отладка измените значение параметра Действие при запуске на Не запускать, а отлаживать мой код при открытии. (Обратите внимание, что при использовании C++ для реализации поставщика службы приложений на вкладке Отладка необходимо изменить значение параметра Запуск приложения на Нет.)
  3. В проекте MyAppService в файле Inventory.cs установите точку останова в OnRequestReceived.
  4. Задайте проект AppServiceProvider в качестве запускаемого проекта и нажмите клавишу F5.
  5. Запустите ClientApp из меню «Пуск» (не из Visual Studio).
  6. Введите число 1 в текстовое поле и нажмите кнопку. Отладчик остановится на вызове службы приложений в точке ее останова.

Отладка клиента

  1. Для отладки клиента, вызывающего службу приложений, выполните инструкции из предыдущего шага.
  2. Запустите ClientApp из меню «Пуск».
  3. Подключите отладчик к процессуClientApp.exe (а не к процессуApplicationFrameHost.exe ). (В Visual Studio последовательно выберите пункты Отладка > Присоединиться к процессу. ).
  4. В проекте ClientApp задайте точку останова в button_Click.
  5. Точки останова в клиенте и службе приложений теперь будут отображаться при вводе числа 1 в текстовое поле ClientApp и нажатии кнопки.

Устранение общих неполадок службы приложений

Если после попытки подключиться к службе приложений возникает состояние AppUnavailable, проверка следующее:

  • Убедитесь, что проект поставщика службы приложений и проект службы приложений развернуты. Необходимо развернуть оба проекта перед запуском клиента, так как в противном случае клиенту не к чему будет подключаться. Вы можете выполнить развертывание из Visual Studio с помощью команды Build>Deploy Solution .
  • В Обозреватель решений убедитесь, что проект поставщика службы приложений содержит ссылку между проектами на проект, реализующий службу приложений.
  • Убедитесь, что запись и ее дочерние элементы добавлены в файл Package.appxmanifest , принадлежащий проекту поставщика службы приложений, как указано выше в разделе Добавление расширения службы приложений в Package.appxmanifest.
  • Убедитесь, что строка AppServiceConnection.AppServiceName в клиенте, вызывающая поставщика службы приложений, совпадает с строкой, указанной в файле Package.appxmanifest проекта поставщика службы приложений.
  • Убедитесь, что AppServiceConnection.PackageFamilyName соответствует имени семейства пакетов компонента поставщика службы приложений, как указано выше в разделе Добавление расширения службы приложений в Package.appxmanifest.
  • Для сторонних служб приложений, таких как в этом примере, убедитесь, что EntryPoint указанный в элементе файла Package.appxmanifest элемента проекта службы приложений соответствует пространству имен и имени класса общедоступного класса, реализующего IBackgroundTask в проекте службы приложений.

Устранение неполадок отладки

Если отладчик не останавливается на точках останова в проекте поставщика службы приложений или проекте службы приложений, выполните следующие действия.

  • Убедитесь, что проект поставщика службы приложений и проект службы приложений развернуты. Оба проекта должны быть развернуты перед запуском клиента. Их можно развернуть из Visual Studio с помощью команды Сборка>развертывания решения.
  • Убедитесь, что проект, который требуется отлаживать, задан как запускаемый и что свойства отладки для этого проекта не запускаются при нажатии клавиши F5 . Щелкните правой кнопкой мыши проект, выберите пункт Свойства и щелкните Отладка (или Отладка в C++). При работе на C# измените значение параметра Действие при запуске на Не запускать, а отлаживать мой код при открытии. При работе на C++ задайте для параметра Запуск приложения значение Нет.

Комментарии

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

  • Создайте фоновую задачу для размещения службы приложений.
  • windows.appService Добавьте расширение в файл Package.appxmanifest поставщика службы приложений.
  • Получите имя семейства пакетов поставщика службы приложений, чтобы мы могли подключиться к нему из клиентского приложения.
  • Добавьте ссылку между проектами из проекта поставщика службы приложений в проект службы приложений.
  • Используйте Windows.ApplicationModel.AppService.AppServiceConnection для вызова службы.

Полный код MyAppService

using System; using Windows.ApplicationModel.AppService; using Windows.ApplicationModel.Background; using Windows.Foundation.Collections; namespace MyAppService < public sealed class Inventory : IBackgroundTask < private BackgroundTaskDeferral backgroundTaskDeferral; private AppServiceConnection appServiceconnection; private String[] inventoryItems = new string[] < "Robot vacuum", "Chair" >; private double[] inventoryPrices = new double[] < 129.99, 88.99 >; public void Run(IBackgroundTaskInstance taskInstance) < // Get a deferral so that the service isn't terminated. this.backgroundTaskDeferral = taskInstance.GetDeferral(); // Associate a cancellation handler with the background task. taskInstance.Canceled += OnTaskCanceled; // Retrieve the app service connection and set up a listener for incoming app service requests. var details = taskInstance.TriggerDetails as AppServiceTriggerDetails; appServiceconnection = details.AppServiceConnection; appServiceconnection.RequestReceived += OnRequestReceived; >private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args) < // Get a deferral because we use an awaitable API below to respond to the message // and we don't want this call to get canceled while we are waiting. var messageDeferral = args.GetDeferral(); ValueSet message = args.Request.Message; ValueSet returnData = new ValueSet(); string command = message["Command"] as string; int? inventoryIndex = message["ID"] as int?; if (inventoryIndex.HasValue && inventoryIndex.Value >= 0 && inventoryIndex.Value < inventoryItems.GetLength(0)) < switch (command) < case "Price": < returnData.Add("Result", inventoryPrices[inventoryIndex.Value]); returnData.Add("Status", "OK"); break; >case "Item": < returnData.Add("Result", inventoryItems[inventoryIndex.Value]); returnData.Add("Status", "OK"); break; >default: < returnData.Add("Status", "Fail: unknown command"); break; >> > else < returnData.Add("Status", "Fail: Index out of range"); >// Return the data to the caller. await args.Request.SendResponseAsync(returnData); // Complete the deferral so that the platform knows that we're done responding to the app service call. // Note for error handling: this must be called even if SendResponseAsync() throws an exception. messageDeferral.Complete(); > private void OnTaskCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason) < if (this.backgroundTaskDeferral != null) < // Complete the service deferral. this.backgroundTaskDeferral.Complete(); >> > > 

Связанные темы

  • Преобразование службы приложений для ее запуска в одном процессе с ведущим приложением
  • Поддержка приложения с помощью фоновых задач
  • Пример приложения службы приложений (C# и C++/WinRT)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *