Azure 与 Microsoft Dynamics 365 的集成

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

通过将 Dynamics 365 事件执行管道连接到 Microsoft Azure 服务总线,您可以将 Microsoft Dynamics 365(在线或本地) 与 Microsoft Azure 平台进行连接。 一旦配置,该连接可以使已处理为当前 Dynamics 365 操作的一部分的数据发布到该服务总线。 通过 Microsoft Azure 服务总线 解决方案(Dynamics 365 感知),可以侦听并读取服务总线上发布的 Microsoft Dynamics 365 数据。

Microsoft Dynamics 365 和 Microsoft Azure 平台之间的连接可以提供一个安全可靠的通道,用于将 Dynamics 365 运行时数据传播到基于外部云的业务线应用程序。

本主题内容

连接的关键元素

Dynamics 365 与服务总线方案

在 Dynamics 365 和 Azure 解决方案之间建立合同

运行时错误管理

连接的关键元素

Microsoft Dynamics 365 和 Microsoft Azure 服务总线 之间实现连接的关键元素,如下所述: 下一部分中的图显示了运行中的这些元素。

  • 数据上下文
    数据上下文包含正处理为当前 Dynamics 365 操作一部分的业务数据。 当执行某个操作的请求由用户、工作流程或应用程序发布至 Dynamics 365 平台时,将启动此处理。 数据上下文传递给使用事件管道注册以根据特定请求和当前正处理的实体组合来执行的任何插件或自定义工作流活动。 当数据上下文正通过事件执行管道传递时,它的类型为 IPluginExecutionContext,当数据上下文发布至服务总线时,它的类型为 RemoteExecutionContext

    除默认 .NET 二进制格式外,包含在发布至 Microsoft Azure 服务总线 中的消息中的数据上下文可为 XML 或 JSON 的格式。 这样可实现跨平台互操作性,Azure 托管的非 .NET 客户端可借此读取服务总线的 Dynamics 365 数据。CRM Online 2016 更新 1 和 CRM 2016 Service Pack 1(本地)中引入了此功能。。

    有关以上描述的 有关 技术,请参阅:了解传递给插件的数据上下文事件执行管道为 Windows Azure 解决方案编写监听应用程序

  • 插件
    插件是用于启动将包含数据上下文的消息发布至 Microsoft Azure 服务总线 的两种方法之一,另一种方法是自定义工作流活动。 有两种受 Dynamics 365-Azure 连接功能支持的插件:自带 (OOB) 和自定义。 在任何情况下,建议您注册插件以异步运行,从而获得最佳系统性能。

    Azure 感知 OOB 插件提供有 Dynamics 365,并可使用 SDK 下载中的插件注册工具进行注册。 该插件在 Microsoft Dynamics 365 平台中以完全信任方式执行。 您必须在识别可触发插件执行和执行发布通知的消息和实体组合的事件执行管道中注册插件“步骤”。 执行时,该插件通过服务终结点通知服务(IServiceEndpointNotificationService)通知异步服务,以将当前请求数据上下文发布至 Microsoft Azure 服务总线。

    您也可以编写自己的自定义“Azure 感知”插件。 自定义插件在沙盒中以不完全信任模式执行。 自定义插件可通过服务终结点通知服务启动将数据上下文发布至服务总线。 添加代码调用此服务,使插件成为“Azure 感知”插件。 有关一般插件的详细信息,请参阅编写插件。 有关 Azure 感知插件的详细信息,请参阅编写 Azure 感知自定义插件

  • 自定义工作流活动
    与插件类似,可编写自定义工作流活动,以通过使用服务终结点通知服务(IServiceEndpointNotificationService)启动将当前请求消息数据上下文发布至 Microsoft Azure 服务总线。详细信息:示例:Azure意识自定义工作流活动

  • 异步服务
    一旦被服务终结点通知服务通知,异步服务即会处理当前正由事件执行管道处理的请求消息的数据上下文至 Microsoft Azure 服务总线 的发布。 每次发送都由异步服务的系统作业执行。 用户可通过使用 Microsoft Dynamics 365 web 应用程序的系统作业 视图来查看每个系统作业的状态。

    有关 有关 异步服务,请参阅 Microsoft Dynamics 365 中的异步服务

  • Microsoft Azure 服务总线
    服务总线在 Microsoft Dynamics 365 和 Microsoft Azure 服务总线 解决方案监听程序之间传递请求消息数据上下文。 服务总线还提供数据安全性,以便仅授权的应用程序可访问发布的 Dynamics 365 数据。 有关 Microsoft Dynamics 365 将数据上下文发布至服务总线及供监听程序读取的授权由 Microsoft Azure Active Directory 访问控制服务 (ACS) 或 Microsoft Azure 共享访问签名 (SAS) 进行管理。

    备注

    关于 SAS 授权:CRM Online 2016 更新 1 和 CRM 2016 Service Pack 1(本地)中引入了此功能。 SAS 是更现代的授权形式,并且相比 ACS,展现更好的性能。

    有关 有关 服务总线,请参阅服务总线。 有关 有关 服务总线授权,请参阅服务总线身份验证和授权

  • Microsoft Azure 解决方案
    为使 Dynamics 365-Azure 连接发挥作用,Microsoft Azure 服务总线 解决方案帐户中必须至少存在一个解决方案,该解决方案包含一个或多个服务终结点。 对于中继终结点合同,“Dynamics 365 感知”的监听程序必须主动在终结点上监听服务总线的 Dynamics 365 请求。 对于队列终结点合同,侦听器不必主动侦听。 通过将侦听器链接到 Microsoft.Xrm.Sdk 程序集以便定义 RemoteExecutionContext 类型,可以使该侦听器成为“Dynamics 365 感知”侦听器。详细信息:为 Windows Azure 解决方案编写监听应用程序

    Microsoft Dynamics 365 支持将事件数据发送至 Azure 事件中心 解决方案。CRM Online 2016 更新 1 和 CRM 2016 Service Pack 1(本地)中引入了此功能。。 有关 有关 事件中心,请参阅 处理 Azure 事件中心解决方案中的 Dynamics 365 事件数据

Dynamics 365 与服务总线方案

现在,让我们了解一个实现上述连接组件的方案。 作为必备条件,ACS 已配置为将 Microsoft Dynamics 365 识别为支持的发布者,并且为 Microsoft Azure 服务总线 解决方案配置了规则以允许 Microsoft Dynamics 365 发布到侦听器所处位置的终结点。

下图显示了构成该方案的物理元素。

Microsoft Dynamics CRM 服务总线方案

该图中标识的事件序列如下所示:

  1. 监听程序在 Microsoft Azure 服务总线 解决方案终结点上进行注册,并开始在服务总线上主动监听 Microsoft Dynamics 365 远程执行上下文。

  2. 用户在 Microsoft Dynamics 365 中执行某些触发操作,以执行注册的 OOB 插件或自定义 Azure 感知插件。 通过异步服务系统作业,插件开始将当前请求数据上下文发送到服务总线。

  3. 对 Microsoft Dynamics 365 发布的声明进行身份验证。 然后,服务总线将远程执行上下文传递到侦听器。 侦听器处理上下文信息,并使用该信息执行某些与业务相关的任务。 服务总线通知成功发布的异步服务,并将相关的系统作业设置为已完成状态。

在 Dynamics 365 和 Azure 解决方案之间建立合同

对于每个解决方案终结点,您都要配置一个合同,以定义在服务总线上处理这些远程执行上下文“消息”的方式以及应在该终结点上使用的安全设置。 使用此处列出的其中一个受支持的合同,在终结点接收服务总线消息。

  • 队列
    队列合同在云中提供信息队列。 使用队列合同,侦听器不必主动侦听终结点上的消息。 对于队列,存在破坏性读取和非破坏性读取。 破坏性读取从队列中读取可用消息并删除该消息。 非破坏性读取不会删除队列中的消息

    Microsoft Dynamics 365 支持的队列类型称为持久队列。 持久队列有较长但有限的消息可用期间(可代码指定)。

  • 单向
    单向合同需要主动侦听器。 如果终结点上没有主动监听程序,将无法发布到服务总线。Microsoft Dynamics 365 将按呈指数级增加的时间跨度重试发布,直到发布请求的异步系统作业最终中止并且其状态设置为“失败”。

  • 双向
    双向合同类似于单向合同,只是字符串值可以从监听程序返回到启动发布的插件或自定义工作流活动。

  • REST
    REST 合同类似于 REST 终结点上的双向合同。

  • 主题
    除了一个或多个侦听器可订阅以从主题接收消息外,其他的与队列相似。

  • 事件中心
    此合同类型适用于 Microsoft Azure 事件中心解决方案。

重要

若要使用这些合同,您必须使用 Microsoft Azure SDK v1.7 或更高版本编写自己的监听程序。

确定合同使用的安全类型是合同配置的一部分。 合同可以使用传输安全性,后者使用传输层安全 (TLS) 或安全套接字层 (SSL) (https)。

声明身份验证用于对服务总线进行安全访问。 用于向服务总线进行身份验证的声明是在 Microsoft Dynamics 365 内生成的,并由 Microsoft Dynamics 365 配置数据库中指定的 AppFabricIssuer 证书签名。

运行时错误管理

如果在尝试向服务总线发送上下文后出现错误,请在 Microsoft Dynamics 365 Web 应用程序中检查相关系统作业的状态,以获取有关该错误的详细信息。 如果服务总线已关闭或侦听器/终结点不可用,则不会将当前在 Microsoft Dynamics 365 中处理的消息发布到总线。 异步服务将继续尝试以指数形式发送该消息,在这种情况下,开始时它会尝试频繁发送,然后以越来越长的间隔发送。 对于内部 Microsoft Dynamics 365 错误,不会尝试发送消息。 对于外部服务总线或网络错误,相关系统作业将处于“等待”状态。

另请参阅

Microsoft Dynamics 365 的 Azure 扩展
配置 Azure 与 Microsoft Dynamics 365 集成
编写插件以扩展业务流程
Microsoft Dynamics 365 中的异步服务
AsyncOperation(系统作业)实体

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权