确定技术选项
你时间不多,无法在现有的自行车租赁系统和第二校园中使用的系统之间正确集成业务流程。 你希望充分利用现有的 Azure 专业知识,并且已经了解到 Azure 包括几种可用于解决此类问题的不同技术。
本单元将探讨可用于自动执行和集成业务流程的 Azure 技术选项。
常见业务问题
在业务中,保证高质量产品和服务的一种方法是设计并实施严格的业务流程。 此类流程可能涉及多个步骤、人员和软件包。 每种流程均可在一系列简单的工作人员可以逐个执行或以分支或循环的方式执行的活动中运行。 每种流程均可快速运行,也可能需要数天或数周才能完成。
企业通常会在与第二方公司兼并或与合作伙伴组织集成时遇到问题。 管理员如何将两个组织中使用的单独流程集成,哪些流程可以使用不同的软件实现?
在软件中模拟的业务流程通常称为“工作流”。 Azure 包括四种不同的技术,可用于构建和实现可集成多个系统的工作流:
- Azure 逻辑应用
- Microsoft Power Automate
- WebJobs
- Azure Functions
这四种技术有一些相似之处。 例如:
- 它们均可接受“输入”。 输入是提供给工作流的数据或文件。
- 它们均可运行“操作”。 操作是一种工作流可运行的简单运作方式,它可能会经常修改数据或导致执行其他操作。
- 它们均包括“条件”。 条件是通常针对可能会决定接下来要运行的操作的输入所运行的一种测试。
- 它们均可生成“输出”。 输出是由工作流创建的一种数据或文件。
此外,使用这些技术创建的工作流可以基于计划启动,一些外部事件也可以触发它们。
设计优先技术
业务分析师讨论和规划业务流程时,他们可能会在纸上绘制流程图。 使用 Azure 逻辑应用和 Microsoft Power Automate,可以采用类似的方法来设计工作流。 它们均包含可在其中绘制工作流的用户界面。 我们将此方法称为“设计优先”方法。
Azure 逻辑应用
Azure 逻辑应用是 Azure 中的一项服务,可用于自动执行、协调和集成分散式应用程序的不同组件。 通过在 Azure 逻辑应用中使用设计优先方法,可以绘制出模拟复杂业务流程的复杂工作流。 以下屏幕截图显示了用于定义工作流的工作流设计器和设计画布。
或者,如果偏好使用代码,则可以通过使用代码视图以 JSON 表示法来创建或编辑工作流,如以下屏幕截图所示。
Azure 逻辑应用如此擅长集成的一个原因是它包含了 1000 多个连接器。 连接器是一种逻辑应用组件,为外部服务提供接口。 例如,X 连接器可以发送和检索推文,而 Office 365 Outlook 连接器让你可以管理电子邮件、日历和联系人。 Azure 逻辑应用提供数百种可用于创建应用的预生成连接器。 如果有要从 Azure 逻辑应用调用的独特的或单独的系统,则可以在系统公开 REST API 时创建自己的连接器。
Microsoft Power Automate
Microsoft Power Automate 是一种服务,即使你没有任何开发或 IT 专业知识经验,也可使用该服务创建工作流。 通过使用网站或 Power Automate 移动应用,可以创建集成和协调多个不同组件的工作流。
可以创建四种不同类型的流:
- 自动:通过某个事件的触发器启动。 例如,事件可能是新发布的推文或正在上传的新文件。
- 按钮:只需在移动设备上单击一下,即可运行重复性任务。
- 计划:定期运行。 例如,每周一次、特定日期或 10 小时后。
- 业务流程:模拟业务流程,例如库存订购流程或投诉过程。 流程可以包括:通知相关人员、记录其批准内容、各个步骤的日历日期、记录流步骤的时间。
Microsoft Power Automate 提供一个易于使用的设计图面来创建这些类型的流。 如以下屏幕截图所示,工作流设计人员可以轻松设计并布局流程。
实质上,Microsoft Power Automate 构建在 Azure 逻辑应用的基础之上。 这一事实意味着 Power Automate 支持与 Azure 逻辑应用相同范围的连接器和操作。 还可以在 Microsoft Power Automate 中使用自定义连接器。
设计优先技术比较
如下表所见,Microsoft Power Automate 更适合非技术人员使用。 如果工作流设计人员是 IT 专业人员、开发者或 DevOps 从业者,那么 Azure 逻辑应用通常更适合。
Microsoft Power Automate | Azure 逻辑应用 | |
---|---|---|
预期用户 | 办公室工作人员和业务分析师 | 开发者和 IT 专业人员 |
预期方案 | 自助式服务工作流的创建 | 高级集成项目 |
设计工具 | 仅 GUI。 浏览器和移动应用 | 浏览器、Visual Studio Code 和 Visual Studio 中的工作流设计器。 允许代码编辑。 |
应用程序生命周期管理 | Power Automate 包括测试和生产环境。 | Azure 逻辑应用源代码可以包含在 Azure DevOps 存储库或其他源代码管理系统(如 GitHub)中。 |
代码优先技术
对于团队中的开发者来说,当他们希望在单个工作流中安排和集成不同的商业应用程序时,他们可能更愿意编写代码。 以下情况就是如此:需要对性能进行更多控制或需要将自定义代码编写为业务流程的一部分。 对于此类人员,Azure 提供了 WebJobs 和 Functions。
WebJobs 和 WebJobs SDK
Azure 应用服务是适用于 Web 应用程序、移动后端和 RESTful API 的基于云的托管服务。 这些应用程序通常需要执行某种类型的后台任务。 例如,在自行车租赁系统中,用户上传自行车的照片时,可能需要生成较小的缩略图照片。
WebJobs 属于 Azure 应用服务,可用于自动运行程序或脚本。 有两种类型的 WebJob:
- 连续:创建 WebJob 时立即启动并在连续循环中运行。 例如,可以使用连续 WebJob 检查共享文件夹中的新照片。
- 已触发:基于绑定事件、按计划或在手动触发时(按需)启动。
若要确定 WebJob 采取的操作,可以使用多种不同的语言编写代码。 例如,可以通过在 Shell 脚本(Windows、PowerShell、Bash)中编写代码来编写 WebJob 脚本。 或者,可使用 PHP、Python、Java 或 JavaScript 编写程序。
还可以使用 .NET 和 .NET 语言(如 C# 或 VB.NET)对 WebJob 进行编程。 在这种情况下,还可使用 WebJobs SDK 轻松完成任务。 SDK 包括一系列类(如 JobHostConfiguration
和 HostBuilder
),这减少了与 Azure 应用服务进行交互所需的代码量。
WebJobs SDK 仅支持 C# 和 NuGet 包管理器。
Azure Functions
Azure Function 是一种简单方法,让你能在云中运行小段代码,而不用考虑托管该代码所需的基础结构。 可以使用 C#、Java、JavaScript、PowerShell、Python 或 Azure Functions 支持的语言一文中列出的任何一种语言来编写 Function。 此外,使用消耗量计划选项,你只需为代码运行的时间付费。 Azure 会根据用户的需求自动缩放函数。
创建 Azure Function 时,可以首先在门户中为其编写代码。 或者,如果需要源代码管理,还可使用 GitHub 或 Azure DevOps 存储库。
要创建 Azure Function,请从模板范围进行选择。 以下表为例,其中列出了可以使用的一些模板:
- HTTP 触发器:希望代码执行以响应通过 HTTP 协议发送的请求。
- 计时器触发器:希望代码按计划执行。
- Blob 存储触发器:希望在将新 Blob 添加到 Azure 存储帐户时执行代码。
- Cosmos DB 触发器:希望代码执行以响应 NoSQL 数据库中的新文档或更新文档。
Azure Functions 可以与 Azure 中的以及来自第三方的多种不同服务集成。 这些服务可以触发函数,将数据输入发送到函数中或接收来自函数的数据输出。
代码优先技术比较
在大多数情况下,你选择 Azure Functions 而不选择 WebJobs 可能是其提供的管理更简单、编码模型更灵活。 但是,你可能会出于以下原因选择 WebJobs:
- 希望代码成为现有应用服务应用程序的一部分,并作为该应用程序的一部分(例如,在同一 Azure DevOps 环境中)进行管理。
- 需要对侦听触发代码的事件的对象进行密切控制。 所说的对象是
JobHost
类,并且可以更灵活地在 WebJobs 中修改其行为。
Azure WebJobs | Azure Functions | |
---|---|---|
支持的语言 | C#(如果使用 WebJobs SDK) | C#、Java、JavaScript、PowerShell 等 |
自动缩放 | 否 | 是 |
在浏览器中开发和测试 | 否 | 是 |
按使用付费定价 | 否 | 是 |
与 Azure 逻辑应用集成 | 否 | 是 |
包管理器 | NuGet(如果使用 WebJobs SDK) | NuGet 和 npm |
可以属于应用服务应用程序 | 是 | 是(根据应用服务计划托管) |
提供对 JobHost 的密切控制 |
是 | 否 |
了解了可供使用的设计优先和代码优先技术之后,那么如何缩小选择范围呢? 下一个单元将解答该问题。