Files

55 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AtomUI.Controls.Shared 模块概览
`AtomUI.Controls.Shared` 是控件共享契约和跨控件基础能力模块。它依赖 `AtomUI.Core` 和 `AtomUI.Generator`,RootNamespace 为 `AtomUI.Controls`。
## 职责
- 提供控件通用接口,例如尺寸、状态、方向、操作系统感知、Header/Content 等共享契约。
- 提供异步加载协调器,统一搜索类和展开类控件的 debounce、超时、取消、去重行为。
- 提供集合视图能力,支撑排序、分组、过滤和虚拟化上下文。
- 提供上传调度、媒体断点、WaveSpirit 等跨控件系统。
## 关键目录
| 目录 | 说明 |
|---|---|
| `AsyncLoad/` | `AsyncSearchLoadCoordinator`、`AsyncExpandLoadCoordinator`、加载结果状态 |
| `Data/ListCollectionViews/` | 列表集合视图、排序、分组、过滤描述 |
| `Net/` | 文件上传调度与传输接口 |
| `MediaQuery/` | 媒体断点和响应式布局支持,规则见 [响应式架构](../../architecture/systems/control-infrastructure/responsive.md) |
| `WaveSpirit/` | 点击波纹/动效扩展 |
| `Converters/`、`Utils/` | 控件共享工具 |
## 相关专题
- [Control 基础设施架构](../../architecture/systems/control-infrastructure/overview.md)
- [异步加载使用指南](../../guides/control-infrastructure/async-loading.md)
- [过滤使用指南](../../guides/control-infrastructure/filtering.md)
## 图片加载职责
Shared 拥有统一图片系统的完整 engine 与公共数据契约:`ImageLoader.cs`、`ImageLoaderStore.cs`、Source/Request/Result/Error/
Progress、Builder options、两级请求合并、下载/解码调度、encoded/decoded/file cache、HTTP transport、source readers、内容
校验、raster codec,以及 SVG 的安全 XML/CSS/data raster、复杂度和一致性模式验证及集中 security policy version。所有文件位于单层
`src/AtomUI.Controls.Shared/ImageLoading/`;不创建 `Application/`、`Runtime/` 或 `Internal/` 子目录。
该模块只依赖 Core 提供的通用 owned-service 生命周期。它不引用 `AtomUI.Controls`,不包含 Avatar fallback、AsyncImage Theme、
Previewer Current/Cover/Preload 策略,也不引用 `Svg.Controls.Avalonia` 或通过反射发现上层 codec。Controls 使用显式 Builder
调用把统一 `SvgImageCodec` 注册到同一个应用 loader;Shared 只向 codec 交付当前安全策略已经验证的不可变字节和 metadata。
`SvgContentValidator` 明确拥有三层判断:不可关闭的安全边界、应用级有界资源预算,以及默认 `Compatible`/可选 `Strict` 的格式
一致性策略。第一版两种模式只在重复 `id` 上不同;兼容模式仍按元素出现位置建立完整引用图,不能跳过深度、环或复杂度检查。
模式在 Application loader 构建时冻结,不进入 `ImageRequestOptions`,Shared 不公开 per-request 开关或任意 validator delegate。
API、文件布局与引擎规则见:
- [统一图片加载系统](../../architecture/systems/image-loading/overview.md)
- [公共契约](../../architecture/systems/image-loading/public-contracts.md)
- [控件 API](../../architecture/systems/image-loading/control-apis.md)
- [管线、并发与生命周期](../../architecture/systems/image-loading/pipeline-and-lifecycle.md)
- [缓存、HTTP 与内容安全](../../architecture/systems/image-loading/caching-and-security.md)
- [网络 SVG 加载](../../architecture/systems/image-loading/network-svg.md)
- [平台、性能与 AOT](../../architecture/systems/image-loading/platforms-and-aot.md)
- [验证与完成门禁](../../architecture/systems/image-loading/verification.md)
过滤专题中的部分实现位于 `AtomUI.Desktop.Controls`,但统一契约和共享数据结构属于本模块的重要背景。