Azure Blob Storage vs. File Service

AzureAzure StorageAzure Blob-Storage

Azure Problem Overview


Please correct my wrongs. From my reading on the topic so far, it appears to me that both, Azure Blob Storage and File Service offer the ability to store file(s) and folder(s) (I understand that blobs can store any binary object, but any serialized binary stream is just a file at the end of the day) in a hierarchical structure that mimics a file system.

Only the API to access them are slightly different in that the File Service allows you to query the source using Win32 File I/O like functions as well in addition to using the REST API.

Why would you choose one over another if you wanted your application to store some files owned by your application's users?

Azure Solutions


Solution 1 - Azure

A few items for your question:

  1. You can't mount Azure Blob Storage as a native share on a virtual machine.
  2. Azure Blob Storage isn't hierarchical beyond containers. You can add files that have / or \ characters in them that are interpreted as folders by many apps that read blob storage.
  3. Azure File Service provides a SMB protocol interface to Azure Blob Storage which solves the problem with (1).

If you are developing a new application then leverage the native Azure API directly into Blob Storage.

If you are porting an existing application that needs to share files then use Azure File Service.

Note that there are a few SMB protocol features that Azure File Service doesn't support.

Solution 2 - Azure

A few other things to consider:

  • Pricing: Blob storage is much cheaper than file storage.
  • Portability: With blob storage if you decide to migrate to a diff platform in future you may have to change your app code but with File storage you can migrate your app to any other platform that supports SMB (assuming you are using native file system APIs in your app)

Solution 3 - Azure

Azure File Service is targeted more to internal file handling. With internal I mean mounting a directory to a VM in the cloud or on-premises so it can be loaded in you back-end (SMB based protocol).

For sharing files with end-users (web or apps) it probably makes more sense to use blob storage as this simplifies downloading through a URL and securing download through Shared Access Signatures.

This post shares more details on the comparison (at the bottom): https://blogs.msdn.microsoft.com/windowsazurestorage/2014/05/12/introducing-microsoft-azure-file-service/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionWater Cooler v2View Question on Stackoverflow
Solution 1 - AzureSimon WView Answer on Stackoverflow
Solution 2 - AzureDharmendar Kumar 'DK'View Answer on Stackoverflow
Solution 3 - Azureuser3922344View Answer on Stackoverflow