我可以完全离线(无网络连接)开发和测试 Azure Functions 吗?我了解 Azure Functions 可以在本地调试,但这与完全脱离 Azure 平台工作不同。
我在 Azure 文档中找到了一些参考资料,我将其解释为连接到 Azure 是运行 Azure Functions 所必需的,即使在本地也是如此。
FWIW,我在 Visual Studio 2017 (15.3.2) 中使用 Azure Functions 工具
我可以完全离线(无网络连接)开发和测试 Azure Functions 吗?我了解 Azure Functions 可以在本地调试,但这与完全脱离 Azure 平台工作不同。
我在 Azure 文档中找到了一些参考资料,我将其解释为连接到 Azure 是运行 Azure Functions 所必需的,即使在本地也是如此。
FWIW,我在 Visual Studio 2017 (15.3.2) 中使用 Azure Functions 工具
答案是不。尽管您可以通过 Azure 模拟器以断开连接的方式使用某些绑定,例如 Azure 存储,但并非所有绑定都提供断开连接的工作方式。
这取决于。某些基础架构(例如 Timer 使用的 [Singleton])需要存储帐户,因为它们使用 blob 租约进行协调。可以禁用日志记录。
在一种极端情况下,如果您要绑定到云资源(即 DocDb)或使用基于云的触发器,那么显然您必须在线。一些绑定(如 blob)可以针对存储模拟器工作,但这是一个具体情况。
在另一个极端,Azure Functions 参数绑定使其对模拟非常友好,可以让您直接离线(以及在单元测试中)调用您的函数,而不是通过 Azure Functions 侦听 + 调度逻辑。例如,您可以将 Blob 绑定到 Stream 或 TextReader,然后直接调用您的函数并将绑定到内存或文件系统的流传递给它们。IAsyncCollector 接口也非常友好。我们自己在 WebJobs SDK 中的单元测试大量利用了这一点(请参阅https://github.com/Azure/azure-webjobs-sdk/blob/b8674651654f27a51ffadd0d38b4f89ce246b7a1/test/Microsoft.Azure.WebJobs.Host.UnitTests/Indexers/ReturnValueTests.cs举个例子)