

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 应用程序入门指南
<a name="onboarding-applications"></a>

在通过 WorkSpaces 应用程序向最终用户提供应用程序之前，请验证该应用程序在应用程序云环境中是否正常运行，验证该 WorkSpaces 应用程序是否可以在不渲染工件的情况下进行流式传输，并根据应用程序的资源配置文件调整队列的大小。此页面提供了一份结构化的入职清单，您可以根据计划直播的每个应用程序遵循该清单。如果您计划使用多会话，则需要特别注意能够在同一台主机上运行多个版本的应用程序。如果您计划使用[本机应用程序模式](https://docs.aws.amazon.com/appstream2/latest/developerguide/feature-support-native-application-mode.html)，则需要验证应用程序在此模式下是否存在任何兼容性问题。

无论您是启动新应用程序还是从其他交付模式迁移现有应用程序，这些指南都适用。

## 入职流程概述
<a name="onboarding-overview"></a>

将应用程序加载到 WorkSpaces 应用程序有两个平行的轨道：
+ **应用程序兼容性验证：**在您的用户所依赖的各项功能中，确认应用程序在流媒体环境中的行为是否正确。
+ **实例大小和容量规划：**选择与应用程序的 CPU、内存和 GPU 配置文件以及您的预期并发用户数相匹配的实例类型和队列扩展策略。

我们建议先完成兼容性验证（在 Image Builder 和试点队列上），然后使用该验证的测量结果来推动实例规模决策。

## 第 1 部分：应用程序兼容性验证
<a name="onboarding-compatibility"></a>

### 一般兼容性
<a name="onboarding-general-compat"></a>

WorkSpaces 应用程序按以下顺序建立流式传输会话：

1. 用户的客户端连接到流媒体实例。

1. 用户已登录实例上的服务器操作系统会话。

1. 应用程序已启动。

1. 流式传输会话开始，此时将应用依赖于客户端的环境设置（例如，客户端显示分辨率、DPI、客户端时区和打印机等客户端重定向设备）。

由于依赖于客户端的环境设置是在应用程序启动*后*应用的，因此在启动期间仅读取一次这些值的应用程序不会对用户的实际客户端配置做出反应。请验证以下内容：
+ 应用程序在启动后读取或订阅显示分辨率、DPI 和时区变化，**或者**您在客户端连接之前使用与您的用户群相匹配的默认值配置流式传输实例。
+ 应用程序允许用户的本地时区与流媒体实例的时区不同。
+ 当客户端在会话中断开连接并重新连接时，应用程序不会失败或挂起。

### Multi-session 兼容性
<a name="onboarding-multi-session-compat"></a>

如果您计划在多会话队列上运行应用程序，请在 Image Builder 和具有两个或更多并发用户的试点队列上验证以下内容：
+ 该应用程序的许可证允许在单个服务器实例上同时进行多用户会话。某些应用程序的每设备或每用户许可证明确禁止此配置。
+ 用户配置文件、应用程序设置和用户数据在会话之间是隔离的。测试一个用户所做的更改是否对另一个并发用户不可见。
+ User-specific 数据写入到每个用户的位置（例如`%APPDATA%`和）`%LOCALAPPDATA%`，而不是写入共享目录（如`C:\Program Files`或`C:\ProgramData`）。
+ 应用程序不依赖于所有会话之间共享的系统服务，或者此类服务可以正确处理多个并发会话。
+ 该应用程序不包含假设为单用户环境的硬编码路径。
+ 系统设备对话框仅枚举当前用户的重定向设备，例如扫描仪和打印机，而不是服务器可见的所有设备。
+ 文件打开和保存对话框可以正确解析当前用户的映射客户端驱动器和重定向文件夹。
+ 用户登录时，应用程序的安装程序、更新程序和任何后台进程都不需要交互式管理员访问权限。

**注意**  
Multi-session 舰队目前不支持网络摄像头、[动态应用程序框架](https://docs.aws.amazon.com/appstream2/latest/developerguide/dynamic-app-framework.html)和[智能卡身份验证](https://docs.aws.amazon.com/appstream2/latest/developerguide/active-directory-prerequisites-smart-card-authentication.html)。如果您需要这些功能中的任何一个，我们建议您使用单会话队列。

### 本机应用程序模式兼容性
<a name="onboarding-native-app-mode"></a>

本机应用程序模式将每个远程应用程序作为用户本地设备上的单独窗口进行流式传输，并带有自己的任务栏图标。在经典模式下正常运行的应用程序在原生应用程序模式下的行为可能有所不同，因为窗口管理、焦点和渲染的处理方式不同。有关该功能的概述，请参阅[本机应用程序模式](https://docs.aws.amazon.com/appstream2/latest/developerguide/feature-support-native-application-mode.html)。

在本机应用程序模式下，在 Image Builder 和飞行员队列上验证以下内容：
+ **窗口显示：**所有应用程序窗口，包括对话框、启动画面和模态提示，都能正确显示并且可以与之交互。请特别注意手动绘制的窗口，而不是使用标准 Windows UI 工具包绘制的窗口（例如，自定义渲染的启动画面或出现在主窗口之前的启动对话框）。它们更有可能出现兼容性问题。
+ **透明或非矩形窗口：**检查是否有透明区域或具有圆形或非矩形形状的窗口（例如，气球提示、自定义工具提示或外观窗口）。它们在原生应用程序模式下可能无法正确呈现。
+ **系统托盘：**本机应用程序模式目前不支持需要 Windows 通知区域（系统托盘）的应用程序。如果您的应用程序仅将托盘图标用于次要功能，请确认当托盘不可用时，核心工作流程仍能正常运行。
+ **DPI 感知：**直播会话的分辨率和 DPI 设置可能与本地客户端不同。如果应用程序不是 DPI-aware，Windows 本身会缩放输出，从而导致渲染模糊。在至少一台 DPI 缩放比例不是 100% 的客户机上进行测试（例如，一台高 DPI 笔记本电脑的比例为 125% 或 150%）。
+ **Multi-window 工作流程：**测试跨多个应用程序窗口的工作流程（例如，在主窗口和模态对话框之间切换，或者在单独窗口中打开的两个文档之间切换）。确认焦点过渡和任务栏点击激活的行为是否符合预期。
+ **Alt\+Tab 和任务栏行为：**使用 Alt\+Tab 并单击任务栏图标在应用程序和其他本地应用程序之间切换。远程应用程序应在不带无关的远程窗口的情况下出现在前台。
+ **模态对话框：**在远程应用程序中打开模态对话框时，底层远程窗口应正确指示该对话框已禁用，单击它应闪烁或激活模态。
+ **打印工作流程：**从应用程序内部打印，并验证打印对话框是否可见（未隐藏在主窗口后面）以及是否列举了重定向的打印机。某些打印机驱动程序显示的打印对话框可能会连接到错误的窗口。如果你观察到这一点，可以考虑使用 **DCV PDF 打印机**代替 **Microsoft Print to PDF**。
+ **浏览器选项卡停靠：**在原生应用程序模式下的直播会话期间，当用户尝试将一个浏览器窗口中的标签页停靠或取消停靠到不同的窗口中时，远程流媒体浏览器的工作方式与本地浏览器不同。用户必须按下 Alt 键，直到选项卡停靠在单独的浏览器窗口中。如果您的用户依赖频繁的选项卡停靠，请计划针对这种行为的用户培训。
+ **模式切换：**测试如果用户在会话期间在本机应用程序模式和经典模式之间切换，应用程序能否继续运行。

我们建议使用试点用户组开始本机应用程序模式验证，并在完全部署之前记录所有特定于应用程序的限制。应用程序的行为和性能可能因流式传输模式而异，因此在经典模式下进行测试并不能替代在原生应用程序模式下进行测试。

### 文件处理和重定向
<a name="onboarding-file-handling"></a>
+ 打开映射的客户端驱动器和重定向文件夹中的文件并将其保存到映射的客户机驱动器和重定向文件夹。
+ 如果应用程序使用临时文件，请确认它们已写入每个用户的临时目录。
+ 如果您的用户处理的文件大于流式传输会话处理的典型大小，请通过会话的文件传输机制测试大文件操作。

### 打印
<a name="onboarding-printing"></a>
+ 测试用户将使用的每种重定向打印机类型（网络打印机、Microsoft 打印到 PDF、PDF 打印机驱动程序（例如 DCV PDF 打印机）和第三方重定向打印机）的打印。
+ 测试每个具有打印工作流程的应用程序的打印，包括嵌入网页内容（例如 Chromium-based 视图）的应用程序。
+ 在原生应用程序模式下验证打印对话框的行为（参见上一节）。

### 本地设备交互
<a name="onboarding-local-devices"></a>
+ 音频输入和输出（麦克风、扬声器和头戴式耳机）。
+ 网络摄像头（如果应用程序使用）。
+ USB 设备重定向（如果应用程序使用）。有关支持的[设备列表，请参阅 USB 设备重定向](https://docs.aws.amazon.com/appstream2/latest/developerguide/feature-support-USB-devices-qualified.html)。
+ 智能卡身份验证（如果应用程序需要）。

### 网络性能
<a name="onboarding-network-perf"></a>
+ 通过代表最坏情况的用户（例如，使用消费类宽带连接的远程用户，往返时间为 100 ms）来衡量应用程序的响应能力。直播会话对往返时间和数据包丢失很敏感。
+ 验证应用程序是否允许短暂的网络中断和会话重新连接。

### Multi-monitor 支持
<a name="onboarding-multi-monitor"></a>
+ 测试跨客户端多台显示器的工作流程。
+ 如果应用程序读取显示器几何图形，请确认它读取的是客户端的显示器布局，而不是流媒体实例的布局。

### 音频和视频功能
<a name="onboarding-audio-video"></a>

Real-time 音频-视频场景（应用程序中嵌入的语音、视频会议和协作工具）需要更高的帧速率，并且可能需要更大的实例类型。请参阅[第 2 部分：实例规模调整和容量规划](#onboarding-sizing)。

### 验证环境
<a name="onboarding-validation-env"></a>

先在 Image Builder 上执行本节中的检查，然后再对包含一小群代表性用户的试点队伍进行检查，然后再将图像发布给您的全部用户群。不要依赖经典模式测试来替代原生应用程序模式测试。

## 第 2 部分：实例规模调整和容量规划
<a name="onboarding-sizing"></a>

### 选择实例系列
<a name="onboarding-instance-family"></a>

根据应用程序的资源配置文件选择实例系列。有关硬件规格和定价，请参阅[WorkSpaces 应用程序实例系列](https://docs.aws.amazon.com/appstream2/latest/developerguide/instance-types.html)和[WorkSpaces 应用程序定价](https://aws.amazon.com/appstream2/pricing/)。


| 应用程序概况 | 推荐的实例系列 | 
| --- | --- | 
| Office、Web 浏览器、大多数业务线应用程序 | 通用 | 
| Compute-bound 应用程序（繁重的客户端计算、本地分析） | 计算优化 | 
| Memory-intensive 应用程序（内存中的大型数据集、内存中的数据库） | 内存优化 | 
| 使用 DirectX、OpenGL 或 OpenCL 的图形应用程序 | Graphics G4dn、G5 或 G6 系列 | 
| Real-time 适用于高帧速率场景的音频-视频 | 在所选系列中扩大实例大小；如果应用程序还使用 GPU 加速，请考虑使用 Graphics 系列实例 | 

每个 WorkSpaces 应用程序实例都有一个 200 GB 的固定大小 C 盘，每次用户会话后都会将其删除。不要依赖实例本地存储来存储用户数据；使用主文件夹、文件共享或配置文件管理来实现持久性。

### 为单个用户调整实例的大小
<a name="onboarding-single-user-sizing"></a>

在调整并发用户规模之前，请测量应用程序在单个会话中的资源使用情况：
+ 配置一个符合应用程序规定的最低要求的所选系列中最小实例大小的 Image Builder。
+ 以单个用户身份登录并端到端运行代表性工作负载。包括将在流式传输会话中运行的所有依赖项（例如，后台同步客户端、安全客户端和配置文件管理客户端）。
+ 使用 Windows 性能监视器或同等工具进行测量：峰值和持续 CPU 使用量、峰值和持续工作集（私有字节）内存使用量、磁盘 I/O 速率以及 GPU 使用率和视频内存（如果适用）。
+ 在正常工作流程中，如果 CPU 峰值超过大约 80% 或峰值内存超过实例容量的大约 75%，则向上移动到下一个实例大小。
+ 为 Windows Server 操作系统、 WorkSpaces 应用程序代理、Amazon DCV、防恶意软件和任何其他管理代理留出空间。经验法则是在单会话实例上预留大约 1 个 vCPU 和 1 GB 内存来支付基本系统开销。

### 多会话舰队的大小
<a name="onboarding-multi-session-sizing"></a>

Multi-session 队列在一个 Windows 服务器实例上同时运行多个用户。每个实例支持的最大用户数取决于实例大小和应用程序的资源配置文件。
+ 从您的单用户测量开始（从上一节开始）。
+ 根据应用程序的行为应用并发乘数。对于以空闲资源为主的应用程序（例如，以交互方式使用的办公应用程序），请计划聚合 CPU 和内存使用量与用户数量大致线性扩展，但由于共享操作系统开销，可减少 20-30%。对于资源配置文件持续处于活动状态的应用程序（例如，数据处理工具或运行繁重的 Web 应用程序的浏览器），请规划近乎线性的扩展，而不进行缩减。
+ 计算每个实例的最大候选用户数为：

```
max_users_per_instance = min(
    (instance_vcpus - 1) / peak_single_user_vcpus_under_concurrency,
    (instance_memory_gb - 1) / peak_single_user_memory_gb_under_concurrency
)
```
+ 在实际的多会话试点中验证候选值。使用候选的并发用户数运行测试（例如，使用负载生成工具或实际试点用户）。监控 CPU 使用率（目标峰值低于 80%，持续内存低于 70%）、可用内存（峰值时目标大于总内存的 15%）、磁盘队列长度（目标持续小于 2）和 DCV 会话响应能力（主观——会话感觉互动吗？）。
+ 如果试点未能达到这些目标中的任何一个，请将每个实例的最大用户数减少一个，然后重新测试。如果试点顺利通过，则可以将每个实例的最大用户数增加一并重新测试，或者为工作负载峰值留出余地。

### 配置队列扩展
<a name="onboarding-fleet-scaling"></a>

在知道每个实例的最大用户数后，根据一段时间内的预期并发用户数配置队列扩展。有关完整机制，请参阅[适用于 WorkSpaces 应用程序的 Fleet Auto Scaling](https://docs.aws.amazon.com/appstream2/latest/developerguide/autoscaling.html)。本节总结了您在入职过程中应做出的决定。
+ **最小容量。**根据工作时间内预期的最低并发用户数除以每个实例的用户数进行设置。每个实例的配置需要几分钟，因此最低容量为零或值过低可能会导致用户在工作日开始时等待实例启动。为了实现可预测的早间增量，请使用**预定的扩展策略**在工作日开始之前增加最低容量，并在工作日结束之前减少最低容量。
+ **最大容量。**设置为考虑并发用户峰值和安全幅度的上限。峰值通常是工作时间平均值的1.2-1.5倍，但要测量自己的流量才能准确设置。
+ **目标利用率。**对于需求不可预测的车队，请使用**目标跟踪扩展策略**。选择一个目标利用率，使其在 15 分钟内`100% - target utilization`超过预期的用户流失率（流失率）。例如，如果 10% 的用户在任意 15 分钟内开始和结束会话，则将目标设置为 90% 或更低。有关更多详细信息[，请参阅白皮书中的扩展策略设计最佳实践](https://docs.aws.amazon.com/whitepapers/latest/best-practices-for-deploying-amazon-appstream-2/best-practices-for-scaling-policy-design.html)。
+ **InsufficientCapacityError 警报。**针对每个队列的`InsufficientCapacityError`指标创建 Amazon CloudWatch 警报，以便管理员在自动扩展无法满足需求时收到警报。

### 通过试点进行端到端验证
<a name="onboarding-pilot"></a>

在向所有用户推出应用程序之前，请至少在整整一个工作周内对 10-50 个用户进行试点。在试点期间：
+ 确认第 1 部分的应用程序兼容性验证结果适用于真实的用户工作负载。
+ 确认所选实例大小支持观察到的每个实例并发用户峰值。
+ 确认舰队扩容策略能够在没有事件的情况下处理一天开始和一天结束时的缩减量。`InsufficientCapacityError`
+ 收集试点用户关于会话响应和应用程序行为的反馈。

## 入职清单
<a name="onboarding-checklist"></a>

使用此清单来跟踪您正在加入的每个应用程序的状态。

**应用程序兼容性**
+ 应用程序许可证允许预期的部署（单会话或多会话、并发用户）。
+ 常规兼容性检查通过（应用程序启动后应用依赖于客户端的设置）。
+ Multi-session 兼容性检查通过（如果目标是多会话队列）。
+ 本机应用程序模式检查通过（窗口、对话框、托盘、DPI、焦点、打印和模式切换）。
+ 文件处理和重定向检查通过。
+ 打印工作流程已针对用户将使用的所有重定向打印机类型进行了验证。
+ 用户将使用的所有设备均经过验证的本地设备交互（音频、摄像头、USB 和智能卡）。
+ Multi-monitor 工作流程已验证。

**实例大小和容量**
+ 根据应用程序资源配置文件选择的实例系列。
+ Single-user 在 Image Builder 上测量的资源使用情况。
+ 在多会话试点中计算和验证的每个实例的最大用户数（如果适用）。
+ 已配置队列扩展策略（最小容量、最大容量、目标利用率或计划扩展）。
+ `InsufficientCapacityError`已配置警报。

**试点和推出**
+ 试运行至少一个工作周，有 10-50 个用户。
+ 已审查飞行员反馈并解决了所有屏蔽问题。
+ 为最终用户培训而记录的应用程序（包括任何本机应用程序模式的已知行为，例如通过 Alt 键停靠浏览器选项卡）。
+ 与利益相关者商定推出计划。