AI NuGet — Embedded SDK
AI-карта для standalone apps и plugin hosts на EyeAuras.SDK.Runtime или EyeAuras.SDK.Embedded.
Карта Embedded SDK
Что обычно нужно
- Заменить
EyeAuras.SDKнаEyeAuras.SDK.Runtimeплюс feature packages для standalone app. - Использовать
EyeAuras.SDK.Embedded, когда one-package compatibility bundle важнее размера output. - Запустить EyeAuras services, Blazor windows, input, memory или CV внутри другого app/plugin.
- Выбрать, какие EyeAuras modules должны загрузиться в embedded process.
- Не путать embedded host code со script sandbox.
Как это устроено
EyeAuras.SDK— compile/reference package для кода, который запускается внутри EyeAuras.EyeAuras.SDK.Runtime— standalone host package. Приложение само владеет process startup, создаёт bootstrapper, объявляет capabilities и ждёт readiness.EyeAuras.SDK.Embedded— толстый compatibility package. Он зависит от Runtime и текущих feature/module packages.EyeAuras.SDK.WebApp— только BlazorWindow/WebView hosting surface.- Runtime implementation modules остаются внутри feature packages под
modules/**. Public metadata/shared assemblies дают compile-time API и capability extension methods, напримерUseMemory()илиUseRoxy(). - Embedded module selection явный. На этом этапе модули не загружаются
on-demand из sync API вроде
LocalProcess. modules.configпоставляется как подписанный инвентарь модулей. Он связывает requested module names с package payload paths и assembly identity; это не означает, что каждый listed module грузится в каждом embedded app. Generated hash/size metadata на этом этапе является только inventory data, а не runtime integrity check.
API
EyeAurasRuntimeBootstrapper— базовый класс для host-owned standalone startup.EyeAurasEmbeddedBootstrapper— compatibility subclass изEyeAuras.SDK.Embedded.ConfigureEmbeddedModules(IEyeAurasModuleSetBuilder modules)— объявляет requested capabilities один раз в bootstrapper subclass.EnsureReadyAsync(CancellationToken)— инициализирует static web assets, requested Prism modules, module payload loading и application readiness.IEyeAurasModuleSetBuilder— собирает requested module names.IEyeAurasModuleSetBuilder.UseModule(string)— добавляет одно requested module name.IEyeAurasModuleSetBuilder.UseModules(params string[])— добавляет несколько requested module names.IEyeAurasModuleLoadPlan— app-wide selection plan. Обычные EyeAuras/EyePad используют load-all plan; embedded hosts используют явные module names, собранные черезConfigureEmbeddedModules(...).UseUiCore()— core UI/runtime services из runtime/core metadata surface.UseBehaviorTree()— добавляется пакетом BehaviorTree.UseMemory()— добавляется пакетом Memory.UseOpenCVAuras()— добавляется пакетом OpenCVAuras.UseRoxy()— добавляется пакетом Roxy.
Типовой сценарий
Минимальный embedded host:
using EyeAuras.BehaviorTree;
using EyeAuras.Memory;
using EyeAuras.SDK.Runtime;
public sealed class AppBootstrapper : EyeAurasRuntimeBootstrapper
{
public AppBootstrapper(IUnityContainer container) : base(container)
{
}
protected override void ConfigureEmbeddedModules(IEyeAurasModuleSetBuilder modules)
{
modules.UseUiCore();
modules.UseBehaviorTree();
modules.UseMemory();
}
}
var container = new UnityContainer();
var bootstrapper = new AppBootstrapper(container);
bootstrapper.Run(runWithDefaultConfiguration: true);
await bootstrapper.EnsureReadyAsync(cancellationToken);
Сборки и пакеты
- Host package:
EyeAuras.SDK.Runtime - Fat compatibility package:
EyeAuras.SDK.Embedded - BlazorWindow-only package:
EyeAuras.SDK.WebApp - Feature packages:
EyeAuras.BehaviorTree,EyeAuras.Memory,EyeAuras.OpenCVAuras,EyeAuras.Roxy - Namespace для runtime module declarations:
EyeAuras.SDK.Runtime - Feature capability extension namespaces совпадают с пакетами: например
EyeAuras.MemoryдляUseMemory()иEyeAuras.RoxyдляUseRoxy(). - Runtime module compatibility map:
modules.config
Что предпочесть
- Держите embedded startup glue в
Program.csи bootstrapper subclass. - Не меняйте exported/generated script files при переходе в standalone.
- Используйте capability methods
UseX(), а не прямые Prism module class names в consumer code. - Считайте readiness failure startup failure, если requested module не удалось загрузить.
Чего избегать
- Не сканируйте static web asset manifests вручную из consumer app.
- Не вызывайте
IDynamicModule.RegisterTypes/OnInitializedнапрямую из consumer app. - Не вызывайте
IApplicationAccessor.ReportIsLoaded()вручную из consumer app. - Не предполагайте, что REPL или scripting services существуют, если requested module их не зарегистрировал.
- Не ссылайтесь напрямую на runtime implementation modules.
Поисковые синонимы
- runtime SDK
- embedded SDK
- standalone SDK
- bootstrapper readiness
- module-name selection
- module load plan
- package capabilities
UseMemoryUseRoxyUseOpenCVAuras
Связанные карты
core/app-runtime-contexts.mdcore/app-modules.mdcore/login-and-licensing.mdwindows-subsystems/blazor-windows.mdrecipes/tool-embedded-eyeauras-host.md