Overview of application development with Azure Files - Azure Storage
Overview β Application development with Azure Files (summary)
This article describes options for developing apps that use Azure Files, guidance for choosing an approach, and the Azure SDK libraries available for data and resource management.
Applies to
Shows supported combinations of management model, billing model, media tier, redundancy, and protocol support (SMB, NFS). SMB is widely supported; NFS is available for certain premium/SSD and ZRS/LRS scenarios. (See original table for full details.)
Ways to access Azure Files β high-level approaches
Standard file I/O libraries
How it works: Mount Azure file shares over SMB or NFS; the OS redirects local file API calls (e.g., System.IO for .NET, os/io for Python, java.io/java.nio for Java, fs for Node.js).
When to use: Best for line-of-business or existing apps that already use file I/O and you donβt want to rewrite code.
Note: SMB uses port 445 and NFS uses port 2049 β ensure network access is allowed. (See Networking considerations for Azure Files.)
FileREST API (data plane)
How it works: Call HTTPS endpoints to operate on file shares, directories, and files; Azure SDK client libraries build on this API.
When to use: For advanced features not available through native protocols, custom cloud integrations (backup, antivirus, data management), and high-scale performance optimizations.
Recommended for directory- or file-level operations. See Libraries for data access.
Storage resource provider REST API (control plane / management plane)
How it works: Use Azure Resource Manager (ARM) REST APIs to manage storage accounts and file shares; Azure SDK management libraries build on this API.
When to use: For resource-level operations such as creating, deleting, or updating storage accounts or file shares.
Recommended for file service- or file share-level operations. See Libraries for resource management.
Azure SDK libraries
Two sets of libraries:
Data plane libraries (File Shares client libraries) β for directory/file-level data access (build on FileREST API). Languages mentioned: .NET, Java, JavaScript, Python, Go. Examples:
.NET: Azure.Storage.Files.Shares (NuGet)
Java: azure-storage-file-share (Maven)
JavaScript: @azure/storage-file-share (npm)
Python: azure-storage-file-share (PyPi)
Go: azfile (pkg.go.dev)
Control plane / resource management libraries (build on Storage resource provider REST API) β for managing storage resources. Languages mentioned: .NET, Java, JavaScript, Python, Go. Examples:
.NET: Azure.ResourceManager.Storage (NuGet)
Java: azure-resourcemanager-storage (Maven)
JavaScript: @azure/arm-storage (NPM)
Python: azure-mgmt-storage (PyPi)
Go: resourcemanager/storage/armstorage (pkg.go.dev)
Guidance summary
Use standard file I/O (SMB/NFS mounts) when you need backward compatibility with existing file-based apps and minimal code changes.
Use the FileREST API / data client libraries when you need advanced, scalable data-plane capabilities or are building cloud services that interact with files programmatically.
Use the Storage resource provider / management libraries when your app needs to perform provisioning or other resource-management tasks at the storage account or share level.
Related content and next steps
Links provided for language-specific guides: Develop for Azure Files with .NET, Java, Python.
Mounting guides: Mount SMB on Windows or Linux; Mount NFS on Linux.
See the original article for full tables, references, and links to SDK documentation.
Last updated: 09/30/2025
Links referenced in this summary point to the same URLs in the original article.
Was this helpful?