与 Citrix 应用程序集成
发布日期: 2016年11月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2013,Dynamics CRM 2015,Dynamics CRM 2016
通过托管到 Unified Service Desk 中,将 Citrix 应用程序与 Unified Service Desk 集成。 这样客户服务代理就可以在 Microsoft Dynamics 365 中处理客户数据的同时,从 Unified Service Desk 客户端内与 Citrix 应用程序交互。 可以在 Citrix XenApp 7.6 上将 Windows 应用程序配置为虚拟应用程序,其在 Unified Service Desk 中作为托管应用程序运行。 更多信息:TechNet:Citrix XenApp 应用程序虚拟化的软件要求
Unified Service Desk 客户端中托管的 Citrix 应用程序使用独立计算架构 (ICA) 协议与 Citrix 服务器上的应用程序远程通信。 Citrix.ica 文件中包含用于连接到服务器远程的信息,如服务器地址、会话属性和身份验证信息。
有关将 Unified Service Desk 与 Citrix 集成的更多信息,请参阅博客:Citrix 与 Unified Service Desk
此主题提供有关配置服务器端和客户端组件以便将 Unified Service Desk 与 Citrix 应用程序集成的信息、示例 Citrix 适配器和一些最佳实践。
本主题内容
为集成 Citrix 集成配置服务器端组件
为集成 Citrix 集成配置客户端组件
Citrix 集成:工作原理
示例 Citrix 适配器
Citrix 集成:最佳实践
为集成 Citrix 集成配置服务器端组件
服务器端组件作为可执行文件 (Microsoft.Uii.Csr.CitrixIntegration.exe) 实施,因此配置为 Citrix 应用程序启动时自动启动的启动程序。 如果尚未从 Unified Service Desk 客户端调用 Citrix 应用程序,这个可执行文件将迅速自我终止。 需要在每个 Citrix 服务器上配置该服务器端组件。
下载该User Interface Integration (UII) SDK 包。
双击包文件以提取内容。
导航到 <ExtractedFolder>\UII\Bin\UII\Citrix Server Component 文件夹,然后将该文件夹下的所有文件复制到 Citrix 服务器上的某个文件夹(如 ServerSideComponent)中。
在您的 Citrix 服务器的 ServerSideComponent 文件夹中,使用记事本编辑 RegPatch Install StartupPrograms on Citrix Server.reg 文件,以便将 "StartupPrograms" 参数的值设置为 Microsoft.Uii.Csr.CitrixIntegration.exe 可执行文件的完整文件路径。
通过运行 RegPatch Install StartupPrograms on Citrix Server.reg 文件在您的 Citrix 服务器上应用注册表修补程序。 该注册表修补程序将可执行文件指定为随 Citrix 应用程序一起启动的启动程序。
为集成 Citrix 集成配置客户端组件
Citrix 集成的客户端配置涉及两件事:
在 Dynamics 365 实例中配置无需任何自定义代码即可直接使用,或者可根据需要扩展的 UII 托管应用程序 (Remote Hosted Application)。 UII 托管应用程序实例上触发的操作通过使用 .ica 文件传输到服务器端组件,并在这里分派给配置的应用程序适配器(如果有)。 有关 UII 托管应用程序的详细信息,请参阅 UII 托管应用程序。
将 Citrix 应用程序可执行文件和其他所需程序集复制到 Unified Service Desk 客户端安装目录中,应用客户端注册表修补程序,然后在 Unified Service Desk 客户端应用程序配置文件中添加 Citrix 特定的设置 。 需要对安装了 Unified Service Desk 客户端应用程序的每台计算机执行此步骤。
配置远程托管应用程序
登录到 Microsoft Dynamics 365。
转到“设置”>“Unified Service Desk”。
单击“托管控件”,然后单击“新建”。
在“新托管控件”页面上(位于“通用”区域下方),指定托管应用程序的名称、排序顺序和显示名称。 每个托管应用程序皆应拥有唯一名称。 排序顺序指定托管应用程序在 Unified Service Desk 内的检索和显示顺序
在“Unified Service Desk”区域下,从 “USD 组件类型”列表选择“CCA 托管应用程序”。
在“托管应用程序类型”区域下,从“托管应用程序”列表中选择“远程托管应用程序”。
在“适配器配置”区段内,可以从“适配器”下拉列表内选择三个适配器配置:
不使用任何适配器:指定托管应用程序不需要任何自动化。
使用自动化适配器 (HAT):指定用于托管应用程序工具包 (HAT) 软件工厂的默认配置。 如果托管应用程序使用自动化适配器 (HAT),请在“自动化”区段下的“自动化 XML”字段中指定托管应用程序的绑定信息。 有关绑定的更多信息,请参阅 使用 UII 检查器为托管应用程序创建绑定。
使用适配器:指定托管应用程序使用自定义适配器。
有关将适配器用于 Citrix 集成的信息,请参阅示例 Citrix 适配器
在“Citrix 应用程序设置”区域下,指定以下值:
ICA 文件名:指定启动 Citrix 应用程序所需的 .ica 文件的完整路径。 .ica 文件中包含用于连接到服务器远程的信息,如服务器地址、会话属性和身份验证信息。
进程获取尝试:指定服务器端可执行文件为查找运行启动的 Citrix 应用程序的进程而应该扫描进程表的次数。 Citrix 应用程序进程可能需要一点时间才会在进程表中显示。
进程获取延迟:指定进程表扫描之间的延迟(以毫秒为单位)。
进程获取文件名:指定 Citrix 应用程序文件名的完整路径。 此值供服务器端可执行文件用于比较运行的进程的文件名以查找匹配项。
保存承载控件。
复制可执行文件,应用注册表修补程序,以及添加 Citrix 配置设置
必须对安装了 Unified Service Desk 客户端应用程序的每台计算机执行此步骤。
导航到 <ExtractedFolder>\UII\Bin\UII\Citrix Server Component,其中的 <ExtractedFolder> 是在前面的为集成 Citrix 集成配置服务器端组件部分中将 UII SDK 包文件解压缩到的位置。
将以下文件从 <ExtractedFolder>\UII\Bin\UII\Citrix Server Component 文件夹复制到 Unified Service Desk 客户端文件夹(通常为 C:\Program Files\Microsoft Dynamics CRM USD\USD)中:
Microsoft.Uii.Csr.CitrixIntegration.exe
AxWFICALib.dll
WFICALib.dll
通过运行 <ExtractedFolder>\UII\Bin\UII\Citrix Server Component 文件夹中的以下文件,在您的 Unified Service Desk 客户端计算机上应用注册表修补程序,以便启用自定义虚拟通道:
对于 x86 客户端:RegPatch Allow Custom Virtual Channels in ICAClient.reg
对于 x64 客户端:RegPatch Allow Custom Virtual Channels in ICAClient x64 Client.reg
备注
如果不应用此注册表修补程序,则不能在客户端和服务器之间通信。
在在 Unified Service Desk 客户端安装目录中的 UnifiedServiceDesk.exe.config 文件内添加以下应用程序设置。 必须将这些应用程序设置添加到根 <configuration> 节点下:
<appSettings> <add key="CitrixIntegration.VirtualChannelNamePrefix" value="CTXUII"/> <add key="CitrixIntegration.XmitFragmentSize" value="200"/> <add key="CitrixIntegration.RecvTimeoutInMilliseconds" value="2000"/> <add key="CitrixIntegration.HeartbeatMaxWaitInMilliseconds" value="60000"/> <add key="CitrixIntegration.ClientOnly.HeartbeatIntervalInMilliseconds" value="15000"/> </appSettings>
备注
Microsoft.Uii.Csr.CitrixIntegration.exe.config 文件中服务器端组件内也有这些应用程序设置。
下面是每个密钥的说明:
<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="header">
<th><p>关键字</p></th>
<th><p>说明</p></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>CitrixIntegration.VirtualChannelNamePrefix</p></td>
<td><p>将为启动的每个 Citrix 应用程序创建两个名称不同,但前缀相同的虚拟通道。 此设置用于自定义前缀,尽管通常不必执行此操作。 此设置在客户端和服务器端必须相同。</p></td>
</tr>
<tr class="even">
<td><p>CitrixIntegration.XmitFragmentSize</p></td>
<td><p>为了满足此处指定的限制,将为虚拟通道传输分段。 如果超过了内部限制(出现这种情况时,跟踪消息应报告),将在内部限制密钥。 此设置在客户端与服务器端之间可能不同。</p></td>
</tr>
<tr class="odd">
<td><p>CitrixIntegration.RecvTimeoutInMilliseconds</p></td>
<td><p>对于所有网络通信,都必须设置超时来帮助确定通信对象何时不可用。 Citrix 集成通信针对请求/响应,而此设置指定系统放弃等待响应前,返回响应所用时间。 此设置在客户端与服务器端之间可能不同。</p></td>
</tr>
<tr class="even">
<td><p>CitrixIntegration.HeartbeatMaxWaitInMilliseconds</p></td>
<td><p>所有虚拟通道通信活动都视为“心跳”。 此设置指定通信通道其中一端(客户端或服务器)判定对方不可用之前,无任何干预通信的情况下经过的最大时间量。 对于服务器端可执行文件 (Microsoft.Uii.Csr.CitrixIntegration.exe),它在得出此结论后终止。 对于客户端托管控件实例,它终止内部心跳 ping 计时器。 此设置在客户端与服务器端之间可能不同。</p></td>
</tr>
<tr class="odd">
<td><p>CitrixIntegration.ClientOnly.HeartbeatIntervalInMilliseconds</p></td>
<td><p>指定触发到服务器端可执行文件 (Microsoft.Uii.Csr.CitrixIntegration.exe) 的 PING 信息,继而通过相应的 PONG 消息回复的计时器的时间段。 这是为了防止客户端和服务器组件同时得出不正确的通信结论。 此设置仅对客户端适用。</p></td>
</tr>
</tbody>
</table>
Citrix 集成:工作原理
鉴于您已经知道如何在 Unified Service Desk 中配置 Citrix 集成,下面介绍从代理在 Unified Service Desk 中启动托管控件到托管控件关闭这段时间,Citrix 集成如何工作。
客户服务代理从 Unified Service Desk 启动 Citrix 托管控件,这将使用为该托管控件配置的 ICA 文件名在 Citrix 服务器上启动 Citrix 应用程序。
服务器端可执行文件执行 (Microsoft.Uii.Csr.CitrixIntegration.exe) 自动启动,并请求 Unified Service Desk 提供为托管控件配置的 Citrix 应用程序设置。 此信息是您在配置远程托管应用程序部分中步骤 8 内配置的
如果应用程序设置请求基于 CitrixIntegration.RecvTimeoutInMilliseconds 应用程序设置中指定的值超时,服务器端可执行文件 (Microsoft.Uii.Csr.CitrixIntegration.exe) 将判定该 Citrix 应用程序实例不是 UII 托管应用程序,并终止。
如果应用程序设置请求不超时,将执行下一步。
通过使用 Citrix 托管控件的应用程序设置,服务器端可执行文件 (Microsoft.Uii.Csr.CitrixIntegration.exe) 继续确定 Citrix 应用程序进程。
如果无法确定 Citrix 应用程序进程,服务器端可执行文件将继续运行,并向客户端发送内容相同的消息。 如果已启用跟踪,则可以查看该消息。
如果确定了 Citrix 应用程序进程,服务器端可执行文件将获取该进程,并继续确定为应用程序指定的顶级窗口。 通常用于外部应用程序的配置由服务器端可执行文件引用,并可用于选择非默认顶级窗口。 如果找不到顶级窗口,服务器端可执行文件将继续运行,并向客户端发送一条参考消息,已打开了跟踪时可查看该消息。
最后,将实例化托管控制的应用程序适配器。 将向适配器提供获取的进程和顶级窗口,此时将在客户端和与服务器之间路由所有适配器操作。
备注
如果找不到该进程,值将为 Null。 如果找不到该窗口,值将为 0。 如果无法实例化适配器,服务器端可执行文件将继续运行,并向客户端发送一条参考消息,已打开了跟踪时可查看该消息。
- 当客户服务代理在 Unified Service Desk 客户端中关闭 Citrix 托管控件时,也将终止服务器端可执行文件。
示例 Citrix 适配器
下面是可供您查看/尝试的一些示例 Citrix 适配器。
示例应用程序适配器
UII SDK 下载程序包中提供了 Citrix 的一个示例应用程序适配器。 要查看/尝试此适配器:
下载该User Interface Integration (UII) SDK 包。
双击包文件以提取内容。
导航到 <ExtractedFolder>\UII\SampleCode\UII\Citrix\ApplicationAdapter 文件夹。 该文件夹中的 README.txt 文件提供有关此适配器的信息。
示例数据驱动的适配器
为了在不需要开发自定义适配器的情况下方便地使用现有数据驱动适配器 (DDA), Unified Service Desk 提供了以下适配器来使用 DataDrivenAdapterBindings 标记实例化 DDA,并将 DDA 操作转换为对实例化的 DDA 的调用:Microsoft.Uii.HostedApplicationToolkit.DataDrivenAdapter.dll。 默认情况下,Unified Service Desk 客户端安装目录中提供此程序集。
要将示例 DDA 适配器与 Citrix 托管控件配合使用,请更新托管控件定义,以便在“适配器配置”下为托管控件指定以下值:
字段 |
值 |
---|---|
适配器 |
使用适配器 |
URI |
Microsoft.Uii.HostedApplicationToolkit.DataDrivenAdapter |
类型 |
Microsoft.Uii.HostedApplicationToolkit.DataDrivenAdapter.DdaAutomationAdapter |
Citrix 集成:最佳实践
下面是在设置与 Citrix 应用程序的集成时可以考虑执行的一些操作。
确保要在 Unified Service Desk 中托管的 Citrix 应用程序可以通过显式启动来成功启动。
使用跟踪确定并解决问题。 跟踪消息帮助您确定并解决问题(如果有)。 默认情况下,Verbose 跟踪在 Microsoft.Uii.Csr.CitrixIntegration.exe.config 文件中启用,用于记录服务器的执行消息:
<add name="Microsoft.Uii.Common.Logging" value="Verbose"/>
然后您可以使用其中一个标准的 User Interface Integration (UII) 日志记录提供程序(如文件日志记录提供程序)将跟踪日志文件写入文件。 跟踪还将在所有连接的调试器中显示。 客户端上的相同设置(UnifiedServiceDesk.exe.config 文件)将在客户端上激活跟踪。
在 Windows 中,运行同一程序的多个进程共享包含可执行文件代码的内存页。 .NET 程序的特性是,应用程序启动时运行时期间,实时 (JIT) 编译器将中间语言 (IL) 编译为机器指令(即可执行代码)。 此运行时编译防止共享本不应出现的相同代码页,继而防止代码页共享优化。 因为服务器端可执行文件 (Microsoft.Uii.Csr.CitrixIntegration.exe) 是 .NET 程序(这种程序允许在一台计算机上运行多个实例),所以可以有效地利用 Ngen.exe(本机图像发生器)工具为服务器端可执行文件创建相关程序集,并将其安装到本地计算机中的本机图像缓存内。 这种方法通过从缓存使用本机图像,而不是使用 JIT 编译器编译原始程序集,更好地利用服务器资源。
另请参阅
UII 托管应用程序
创建和管理 UII 托管应用程序
扩展统一服务台
Unified Service Desk 2.0
© 2017 Microsoft。 保留所有权利。 版权