2017-08-30 80 views
0

我可以完全脫機開發和測試Azure功能嗎(無網絡連接)?我瞭解Azure函數可以在本地調試,但這與從Azure平臺完全斷開連接不同。可以離線開發Azure函數嗎?

我在Azure文檔中發現了一些我解釋爲意味着連接到Azure的引用,即使在本地運行Azure函數也是必需的。

FWIW,我使用了Azure的功能工具在Visual Studio 2017年(15.3.2)

+0

這取決於您使用的綁定類型。如果您使用的是Azure存儲隊列或Blob,那麼您將能夠在本地開發和測試Azure函數。在這種情況下,您將使用Azure存儲模擬器。 –

+0

@GauravMantri - 根據文檔,「我們建議您在本地開發時使用Azure存儲帳戶。 Azure功能工具不支持Azure存儲模擬器的使用。如果文檔是正確的,那麼任何類型的離線開發都是不可能的,對嗎? – DenaliHardtail

+1

我記得使用存儲模擬器在本地測試函數。也請看看這個博客文章:https://www.eliostruyf.com/set-up-azure-storage-for-local-develop-of-timer-or-queue-triggered-azure-functions/。 –

回答

1

答案是否定的。雖然您可以通過Azure Emulator以斷開的方式使用某些綁定(如Azure存儲),但並非所有這些綁定都可以提供斷開連接的方式。

0

這取決於。 某些基礎設施(如Timer使用的[Singleton])需要存儲帳戶,因爲它們使用blob租賃進行協調。日誌記錄可以被禁用。

一方面,如果您綁定到雲資源(即DocDb)或使用基於雲的觸發器,那麼顯然您必須聯機。 一些綁定(如blob)可以對存儲模擬器起作用,但這是個案的基礎。另一個極端,Azure Functions參數綁定使得它非常模擬友好,它可以讓你直接離線調用你的函數(也可以在單元測試中),而不是通過Azure函數的listen + dispatch邏輯。例如,您可以將Blob綁定到Stream或TextReader,然後直接調用您的函數並將它們傳遞給綁定到內存或文件系統的流。 IAsyncCollector接口也非常適合模擬。 我們在WebJobs SDK中的自己的單元測試充分利用了這一點(參見https://github.com/Azure/azure-webjobs-sdk/blob/b8674651654f27a51ffadd0d38b4f89ce246b7a1/test/Microsoft.Azure.WebJobs.Host.UnitTests/Indexers/ReturnValueTests.cs作爲示例)

相關問題