在上一章中,我们了解了如何在Dynamics365中使用新的RESTWebneneneba API端点来执行各种操作,以及如何使用它来开发自定义业务应用程序。在本章中,我们将了解Dynamics 365如何以本机方式支持与Microsoft Azure的集成。本章假定对微软Azure的基本原理有基本了解。
供Microsoft Azure参考
什么是 Azure - Microsoft 云服务 | Microsoft Azure
Microsoft Azure可以定义为一个云计算平台或基于云的服务集合,开发人员和IT专业人员可以通过全球各地的各种数据中心使用它来构建、测试、部署和管理应用程序。Microsoft Azure提供基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
对于IaaS,我们基本上指的是Azure虚拟机,即托管在云上的服务器。云计算服务提供商,在这种情况下是微软,管理基础设施,我们需要为使用资源付费。在这里,我们拥有完全的控制权,并负责管理运行在那里的操作系统、中间件和应用程序。我们还可以在Microsoft Azure虚拟机中部署Dynamics 365内部部署。
有了PaaS,我们在云中有了一个完整的开发和部署环境,我们可以使用它在云中构建、部署和管理我们的应用程序。我们为我们正在使用的云服务付费。在这里,我们只管理我们的应用程序和服务,而云服务提供商管理其他一切。
有了SaaS,我们基本上可以通过互联网连接和使用软件或基于云的应用程序。
在这里,我们只需要为我们将要使用的基于云的应用程序付费。云服务提供商管理一切,无论是底层基础设施、中间件、应用软件等等。我们只需要连接到这些应用程序,主要是使用互联网上的网络浏览器来使用它们。Dynamics 365 Online属于SaaS。
在本章中,我们将介绍以下几点:
Microsoft Azure服务总线是Microsoft Azure堆栈中的主要组件,使我们能够将Dynamics 365与Microsoft Azure连接起来。通过Azure服务总线,我们可以将Dynamics 365内部执行的操作的详细信息传递给正在侦听该操作的多个应用程序,并可以读取和处理该信息。
Azure服务总线可以定义为在Microsoft的Azure数据中心中运行的云消息服务。Azure服务总线使我们能够连接托管在云中或防火墙网络内的内部部署中的不同应用程序、服务或设备。它可以用于连接不同的业务线(LOB)应用程序、平板电脑、手机,甚至任何家用电器或传感器。此Azure服务总线支持两种不同的通信机制:代理消息传递(队列、主题和订阅)和中继服务。
Azure服务总线代理的消息传递功能包括可以在Microsoft的Azure数据中心中创建和托管的队列和主题。应用程序可以连接到创建的队列或主题,并向它们发送消息。这些消息将持久存储。
然后,接收应用程序可以连接到它们,并可以接收和处理消息。发送应用程序和接收应用程序可以托管在云中,也可以在本地。队列提供单向异步通信,其中发布者发布消息,订阅者接收消息。每个消息都由一个订户接收。主题还提供了单向异步消息传递基础结构,其中发布者发布消息,接收方像队列一样接收消息。主要区别在于,多个订阅者可以接收同一条消息,他们可以选择指定一些标准,以便只接收符合指定规则的消息。由于它们通过代理提供单向异步通信,即发送方和接收方之间没有直接连接,因此不适合我们希望发送方和接收方都交换消息或直接相互连接,或希望它们之间进行同步通信的情况。为了解决此问题,Azure服务提供中继。
Azure服务总线中继服务提供应用程序之间的双向同步通信功能,与队列和主题不同。中继服务允许我们在云中公开一个端点,该端点充当我们在云上托管的服务或本地服务的代理。然后,任何可以访问互联网的客户端都可以对该端点进行调用,这些调用会中继回防火墙后面的服务或任何其他侦听消息的应用程序。这为组织公开服务提供了一种非常可靠且具有成本效益的方式。
Azure服务总线文档
Azure Service Bus Messaging documentation | Microsoft Learn
在上一节中,我们介绍了Azure服务总线的基本知识,在本节中,将介绍Dynamics 365如何与Azure服务总线集成。
下图显示了Dynamics 365如何与Azure服务总线一起工作,以连接到可以在云中或托管在防火墙后面的应用程序:
以下是对相同内容的逐步解释:
SAS授权在CRM Online 2016 Update 1中引入,性能优于ACS。SAS是Dynamics 365的推荐授权方法。请参阅此处,以将服务端点从ACS更新为SAS授权
Walkthrough: Update a service endpoint from ACS to SAS authorization | Microsoft Learn
正如我们之前看到的,我们可以针对Dynamics365中的特定事件注册一个Azure感知插件,然后该插件将此执行上下文传递给Azure服务总线,后者将其转发给侦听器应用程序。在这里,我们可以使用OOB Azure感知插件,也可以编写自己的自定义Azure感知插件或自定义工作流活动。
使用Dynamics 365 Online 9.0版,我们可以使用Webhook作为Azure Service Bus的替代方案,将有关事件的数据发送到web应用程序
对于OOB Azure感知插件,我们需要首先通过插件注册工具注册新的服务端点:
在服务端点注册中,我们需要指定一个到Azure service Bus的连接,我们希望将插件事件传递到该连接:
服务端点保存有关Azure服务总线的授权信息,例如服务总线命名空间地址和SAS密钥。成功注册后,我们可以向添加的服务端点添加插件步骤,就像我们对常用插件程序集所做的那样。
此支持Azure的OOB插件在完全信任的情况下执行。然而,OOB Azure感知插件存在某些限制,例如它只能异步运行,不能调用CRM SDK方法,并且不能编写用于日志记录或审计目的的跟踪语句。
除了Dynamics 365提供的OOB Azure感知插件外,我们还可以创建自己的自定义Azure感知插件或自定义工作流活动。
传递给IPlugin的Execute方法的IServiceProvider包含IServiceEndpointNotificationService的实例。我们可以调用它的Execute方法来将执行上下文发布到Azure服务总线。Execute方法需要服务端点的实体引用;我们可以从插件注册工具中获取服务端点ID。添加此代码以调用端点通知服务使我们的插件Azure知道:
- public class AzureAwarePlugin : IPlugin
- {
- public void Execute(IServiceProvider serviceProvider)
- {
- // set the Service Endpoint Id
- var serviceEndpointId = "[ServiceEndpointGuid]";
- // Obtain the execution context from the service provider.
- IPluginExecutionContext context &