azure - 使用 azure 函数的数据访问层模式

标签 azure design-patterns azure-functions data-access-layer

我们目前正在开发一种使用 Azure 函数和 Azure 存储队列绑定(bind)的设计。 队列中的每条消息代表一个完整的事务。 Azure 函数将绑定(bind)到该队列,以便队列中出现新消息时立即触发该函数。 然后该函数将在 SQL DB 中提交事务。

初步实现也已完成;并且运行良好。然而,回顾过去,我们正在考虑以下几点: 在典型的 DAL 中,有使用 Entity Framework 、存储库模式等的完善设计模式。但是,在无服务器代码中实现 DAL 时,我们没有找到类似的指导/最佳实践。 因此,我的问题是:此类模式是否应该使用 Azure 函数来实现(这将具有挑战性:)),或者无服务器代码是否应该尽可能保持轻量,否则这根本不是 azure 函数的用例?

最佳答案

不需要任何太特别的东西。我们使用一组常规的库 DLL 来处理各种事务 - 数据库、与 Azure 的其他部分交互(例如检索连接字符串的 Key Vault secret )、解析文件上传、业务规则等。这些库以 netstandard20 为目标,因此当正确的触发器可用时,我们可以更轻松地迁移到 Functions v2。

主要是设计您的库,使它们高度模块化,这样您就可以最大限度地减少完成工作所需的加载量(假设在系统的其他区域中重用很重要,通常也是如此)。

如果现在可以使用依赖注入(inject)的话会更容易。请参阅this在获得官方 DI 支持之前,我们中的一些人已经通过多种方式将其组合在一起。 (DI 位于 Functions 的路线图上,我相信 3.0 版本会发布。)

起初,我有点担心库方法的启动时间,但底层 WebJobs 堆栈本身已经相当重,而且 Functions 启动性能似乎无论如何都有很大差异(至少在更便宜的层上)。在测试过程中,我们不常执行的函数之一的变化范围从大约 300 毫秒到大约 3800 毫秒的峰值,以解析完全相同的测试文件,除了大约 55 毫秒外,所有函数都花费在启动上。

关于azure - 使用 azure 函数的数据访问层模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900315/

相关文章:

node.js - html 或 Latex 到 pdf 解析器

python - 在应用服务计划中的 Azure Function App 上安装 Hive ODBC 驱动程序

node.js - 我无法在本地运行 Azure Functions 核心工具

java - 如果我们使用工厂模式,我们是否应该向用户隐藏产品?

ios - 如何确保 iOS 应用程序收到服务器发送的每个推送通知?

java - 为什么有 java 单例类?你什么时候需要使用一个

c# - 函数 'IotHubTrigger' 的监听器无法启动。物联网中心

Azure 数据资源管理器基于 2 列创建新列

json - 如何将大型 JSON 数组文件加载到 Azure Data Lake Analytics (ADLA) 中

azure - Terraform:具有多个条件内容的动态 block