Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поскольку организации все чаще используют Power Platform для создания масштабируемых приложений, управляемых данными, выбор правильного подхода к реализации бизнес-логики становится критически важным. Эта эталонная архитектура представляет два варианта — функции Power Fx и пользовательские API Dataverse— для оптимизации производительности и удобства обслуживания в приложениях холста Power Apps.
Сценарий
По умолчанию, когда приложение запрашивает данные или выполняет несколько изменений, он отправляет отдельные http-сетевые запросы в Dataverse. Dataverse возвращает данные в приложение, а логика приложения обрабатывает ее.
Этот шаблон реализации приводит к времени ожидания, особенно если приложение отправляет несколько запросов, например в функции ForAll. Время ожидания негативно влияет на производительность и взаимодействие с пользователем. Например, если приложение извлекает и преобразует данные несколько раз в цикле ForAll, общее время ожидания может стать существенным, что приводит к медленному и неэффективному пользовательскому интерфейсу.
Чтобы оптимизировать взаимодействие с данными, переместите логику и операции извлечения данных из приложения холста в Dataverse с помощью пользовательских API Dataverse или функций Power Fx. Операции изменения данных выполняются в рамках транзакции, обеспечивая согласованность данных при возникновении ошибки.
Tip
В этой статье приведен пример сценария и обобщенная архитектура, демонстрирующая, как приложения холста, использующие Dataverse, могут перемещать сложную бизнес-логику в пользовательские API Dataverse и функцию Power Fx для повышения производительности. Пример архитектуры можно изменить для многих различных сценариев и отраслей.
Диаграмма архитектуры
На этой схеме функции Power Fx используются для переноса сложной бизнес-логики из канвасного приложения в Dataverse. Вы также можете использовать пользовательский API Dataverse для достижения того же результата. Ознакомьтесь с рекомендациями , чтобы решить, какой вариант следует использовать.
Рабочий процесс
Приложение холста Power Apps использует Dataverse для управления выделением ресурсов. Приложение использует функцию Power Fx (настраиваемый API Dataverse будет выполнять ту же функцию) для тяжелых операций с данными вместо непосредственного использования встроенных возможностей доступа. Приложение по-прежнему использует встроенные возможности Dataverse для операций с данными небольшого объема и задач, которые не требуют транзакционной поддержки.
Функция Power Fx (с пользовательским API Dataverse) настроена для передачи входных параметров из вызывающего приложения и получения результата (параметров ответа) из функции (или API) с помощью определенных выходных параметров. Для:
Функция Power Fx (предварительная версия): Реализуйте логику в студии Power Apps. Используя функции Power Fx, разработчики могут создавать сложную логику с небольшим опытом написания кода. Дополнительные сведения см. в функциях Power Fx.
Dataverse custom API: Реализуйте логику путем создания подключаемого модуля Dataverse .NET. Пользовательские плагины .NET требуют более глубоких знаний программирования, но обеспечивают больший контроль и расширяемость. Дополнительные сведения см. в пользовательских API в Dataverse.
Сведения о варианте использования
Power Apps позволяет организациям создавать пользовательские интерфейсы пользователей и централизировать бизнес-логику. С помощью Power Apps вы можете добиться более эффективной архитектуры данных и уменьшить рабочую нагрузку на стороне клиента.
В следующем примере приложение Power Apps на основе холста помогает создателям эффективно распределять ресурсы между командами и задачами. Этот шаблон архитектуры можно применить к аналогичным сценариям, в которых приложение холста включает операции с данными и требует:
- Несколько циклов в приложении Canvas, которые невозможно реализовать с помощью функции Concurrent.
- Интенсивные вычисления для нескольких преобразований данных.
- Согласованное время выполнения, независимо от количества элементов в цикле или подключении пользователя к Интернету.
- Согласованность данных в нескольких операциях изменения данных.
Чтобы выделить ресурсы, производитель должен указать местоположения, задачи, подзадачи и другие связанные метаданные выделения. На экране "Обзор ресурсов" в приложении Canvas отображаются несколько уровней коррелированных данных, таких как:
- Ресурсы
- Расположение
- Задачи
- Вложенные задачи
- Утверждение
- Вложенные задачи
- Задачи
- Расположение
Для этого можно реализовать логику приложения с помощью Power Fx следующим образом:
ForAll(Resources,
//Transformations
ForAll(Location,
//Transformations...
ForAll(Tasks,
//Transformations ...
)
)
)
Эта логика создает несколько HTTP-вызовов Dataverse при запуске приложения. Хотя рекомендуется объединить данные в представления Dataverse или использовать параллельные функции или другие методы Power Fx, этот подход не всегда возможен или не соответствует целям производительности.
Чтобы устранить эту проблему, удалите несколько HTTP-вызовов из приложения холста, переместив преобразование данных ( обработку данных и необходимые результаты) в один ответ. Этот подход сокращает время ожидания получения данных, повышает общую производительность приложения холста и обеспечивает более плавное и более гибкое взаимодействие с пользователем. Централизованная логика преобразования данных обеспечивает согласованную и эффективную обработку на стороне сервера, что делает решение масштабируемым для больших объемов данных и сложных преобразований.
Options
Пользовательские API Dataverse и Функции Power Fx расширяют бизнес-логику Dataverse.
Функции Power Fx
Функция Power Fx создает абстракцию возможности пользовательского API Dataverse и позволяет реализовать логику с помощью Power Fx.
Функции Power Fx расширяют бизнес-логику Dataverse и могут вызываться по запросу из компонентов Power Platform, таких как приложения холста Power Apps, потоки Power Automate и пользовательские агенты, созданные с помощью Microsoft Copilot Studio. Эта функция поддерживает реализацию более базовой логики, которая недостаточно сложна, чтобы использовать полную возможность пользовательского API Dataverse.
Пользовательские API Dataverse
Подключаемый модуль Dataverse — это настраиваемый обработчик событий, который выполняется в ответ на определенные события. В случае пользовательского API Dataverse при определении API создается настраиваемое событие, которое приложение вызывает при использовании API. Эти подключаемые модули реализуются как пользовательские классы, скомпилированные в сборку .NET Framework, которая затем загружается и регистрируется в Dataverse.
Подключаемые модули расширяют бизнес-логику Dataverse, позволяя разработчикам писать пользовательский код для выполнения при возникновении определенных событий, таких как создание, обновление или удаление записей или прямые вызовы с помощью пользовательского API. Эта функция поддерживает реализацию более сложных и специализированных бизнес-процессов в Power Platform, обеспечивая полную интеграцию с Canvas Apps или Power Automate.
Используя функции Power Fx и пользовательские API Dataverse, создатели могут вызывать действие функции непосредственно в формуле, поддерживая как привязанные, так и несвязанные действия. Они также могут добавить объект языка среды Power Fx в свое приложение, обеспечивая доступ к функциям. С помощью пользовательских API Dataverse создатели могут обрабатывать нетипизированные поля объектов для входных и выходных данных.
Recommendations
Функции Power Fx и пользовательские API Dataverse выполняют операции изменения данных в транзакции.
Выберите функции Power Fx , если вариант использования соответствует следующим критериям:
- Логика не слишком сложна и может быть выражена с помощью Power Fx.
- Вы хотите предоставить разработчикам (не разработчикам) возможность создавать и поддерживать логику.
- Вы предпочитаете подход с низким кодом , который легко интегрируется с порталом Power Apps.
- Вам требуется трансакционная согласованность но не требуются расширенные возможности .NET.
- Вы хотите централизовать логику для повторного использования между приложениями и потоками без участия разработчиков .NET.
Дополнительные сведения о функциях в Microsoft Dataverse (предварительная версия)
Выберите настраиваемые API Dataverse , если для вашего варианта использования требуется:
- Сложная бизнес-логика , которую Power Fx не может выразить.
- Расширенные возможности , такие как настраиваемая обработка ошибок, телеметрия и интеграция с внешними системами.
- Опыт разработки .NET доступен и приемлемый в рабочем процессе.
- Полный контроль над конвейером выполнения, включая регистрацию подключаемых модулей и мониторинг.
- Данные телеметрии и диагностики, такие как Application Insights для отслеживания работоспособности.
Дополнительные сведения см. в разделе "Создание и использование пользовательских API".
Если ваша цель заключается в оптимизации производительности приложений на основе холста при сохранении доступности и обслуживания решения создателями, функции Power Fx являются лучшим выбором. Если вы создаете критически важный, высоко настраиваемый бэкэнд, рассмотрите возможность использования пользовательских API Dataverse.
Альтернативы
Другой подход к этому шаблону заключается в переносе операций с данными и логики в REST API с последующей реализацией пользовательского соединителя, позволяющего использовать эти операции в Power Apps. Разница с этим подходом заключается в том, где выполняются операции логики и данных. В этом случае они выполняются в вычислительном ресурсе, который реализует REST API, например функцию Azure.
Так как они не выполняются в песочнице среды выполнения Dataverse, операции данных выполняются быстрее, чем операции с клиентом, но медленнее, чем те, которые выполняются в Dataverse. Аналогичным образом логика не выполняется в контексте транзакции Dataverse. Если не выполняются специальные действия, каждая операция данных не является независимой и не завершается в виде транзакционной единицы.
Узнайте больше о том, как использовать REST API для расширения функциональных возможностей приложений на основе холста.
Considerations
Эти соображения реализуют основы Power Platform Well-Architected — набора руководящих принципов, повышающих качество рабочей нагрузки. Дополнительные сведения см. в разделе Microsoft Power Platform Well-Architected.
Reliability
Спроектируйте рабочую нагрузку, чтобы избежать ненужной сложности: смена операций данных и логики из приложения на основе холста позволяет избежать ненужных сложностей в приложении. Этот подход также централизует логику, чтобы другие приложения в организации могли использовать ее. Кроме того, разработчики Power Apps получают преимущества от улучшений производительности, не добавляя сложности в приложение.
Проверка устойчивости и доступности. Перемещение логики из приложения холста в пользовательские API Dataverse или функции Power Fx позволяет протестировать API или функцию независимо от приложения.
Измерение и публикация индикаторов работоспособности (пользовательские API Dataverse): пользовательские API Dataverse обеспечивают расширенный мониторинг и телеметрию через подключаемый модуль .NET. Чтобы обеспечить надлежащее отслеживание, рассмотрите возможность использования ведения журнала Application Insights .
Операционная эффективность
Используйте безопасные методы развертывания: стандартизируйте процесс развертывания изменений в приложении Power Apps с помощью автоматизированных процессов, таких как конвейеры. Переводите приложение в рабочую среду только после тестирования изменений. В качестве компонентов решения пользовательские API Dataverse и функции Power Fx развертываются вместе с приложением при их использовании в одном решении Dataverse. Этот подход минимизирует риск асинхронности компонентов в ваших средах.
Реализуйте стратегию смягчения последствий сбоев развертывания: при развертывании приложения и пользовательского API Dataverse или функции Power Fx, ваша стратегия смягчения последствий упрощается, так как она следует той же стратегии отката или исправления, что и приложение.
Эффективность работы
Проектирование в соответствии с требованиями к производительности: оценка производительности и требований к объему данных решения. Узнайте, как ваше приложение получает доступ к данным и как использование Power Apps с различными источниками данных может замедлить производительность из-за задержки, вызванной отдельными запросами, отправляемыми в каждое хранилище данных. Например, если логика приложения работает во многих строках в источнике данных, вы можете переместить весь сетевой трафик в пользовательский API или функцию. Сокращение до одного взаимодействия с пользовательским API или функцией, которое затем обрабатывает взаимодействие с Dataverse, делает операции более эффективными.
Оптимизация логики (пользовательские API Dataverse): По мере того как логика становится более сложной в приложении на основе холста, пользовательские API Dataverse позволяют выгрузить эту логику в централизованную, многократно использованную службу.
Тестирование производительности: наряду с тестированием функциональности и выявлением сбоев, проводите тестирование и разработку базовых показателей производительности. Оценивайте этот базовый показатель в ходе цикла выпуска, если пользовательский API Dataverse или функция Power Fx чувствительны к изменениям времени выполнения операций.
Соавторы
Корпорация Майкрософт поддерживает эту статью. Следующие авторы написали эту статью.
Основные авторы:
- Руи Сантос, главный руководитель программы
- Ravikiran Patil, старший инженер программного обеспечения