Class FileSystemBlobStorage
Реализует сервис для работы хранилищем BLOB (Binary Large OBject) на основе файловой системы.
Inheritance
Namespace:InfinniPlatform.BlobStorage
Assembly:InfinniPlatform.BlobStorage.FileSystem.dll
Syntax
public class FileSystemBlobStorage : object, IBlobStorage
Remarks
Достаточно простая реализация. Хранилище представляет собой каталог с файлами. Для обеспечения
быстрого доступа к файлам - log(N) - каталог организован в виден набора вложенных друг в друга
подкаталогов. Нулевой уровень - корневая папка хранилища, первый уровень - первые 2 символа
идентификатора BLOB, второй уровень - вторые 2 символа идентификатора BLOB, третий уровень -
оставшиеся символы идентификатора BLOB. В каталоге третьего уровня содержат два файла: info
и data. В файле info хранится мета-информация о BLOB, представленная в виде JSON-объекта
(идентификатор, наименование, MIME-тип, размер, дата изменения и т.п.). Наличие файла info
в текущей реализации не обязательно. В файле data хранятся данные BLOB. Наличие файла data
обязательно.
Выбор в пользу использования обычной файловой системы был сделан не случайно. Во-первых,
это самый простой и гибкий способ. Во-вторых, некоторые распределенные файловые системы
имеют FUSE (Filesystem in Userspace) адаптеры, поддерживающие POSIX-стандарт, что дает
возможность использовать функции обычной файловой системы при работе, не задумываясь о
том, что на самом деле работа идет с распределенным хранилищем. В-третьих, пока трудно
судить о том, какое распределенное хранилище (из тех, которые не имеют FUSE) подойдет
лучше других.
ЗАМЕЧАНИЕ. В настоящее время чтение и запись выполняются в режиме
Constructors
| Improve this Doc View SourceFileSystemBlobStorage(FileSystemBlobStorageOptions, IObjectSerializer, IMimeTypeResolver, IPerformanceLogger<FileSystemBlobStorage>)
Declaration
public FileSystemBlobStorage(FileSystemBlobStorageOptions options, IObjectSerializer objectSerializer, IMimeTypeResolver mimeTypeResolver, IPerformanceLogger<FileSystemBlobStorage> perfLogger)
Parameters
Type | Name | Description |
---|---|---|
FileSystemBlobStorageOptions | options | |
IObjectSerializer | objectSerializer | |
IMimeTypeResolver | mimeTypeResolver | |
IPerformanceLogger<FileSystemBlobStorage> | perfLogger |
Methods
| Improve this Doc View SourceCreateBlob(String, String, Stream)
Declaration
public BlobInfo CreateBlob(string blobName, string blobType, Stream blobData)
Parameters
Type | Name | Description |
---|---|---|
System.String | blobName | |
System.String | blobType | |
Stream | blobData |
Returns
Type | Description |
---|---|
BlobInfo |
CreateBlobAsync(String, String, Stream)
Declaration
public Task<BlobInfo> CreateBlobAsync(string blobName, string blobType, Stream blobData)
Parameters
Type | Name | Description |
---|---|---|
System.String | blobName | |
System.String | blobType | |
Stream | blobData |
Returns
Type | Description |
---|---|
Task<BlobInfo> |
DeleteBlob(String)
Declaration
public void DeleteBlob(string blobId)
Parameters
Type | Name | Description |
---|---|---|
System.String | blobId |
GetBlobData(String)
Declaration
public BlobData GetBlobData(string blobId)
Parameters
Type | Name | Description |
---|---|---|
System.String | blobId |
Returns
Type | Description |
---|---|
BlobData |
GetBlobInfo(String)
Declaration
public BlobInfo GetBlobInfo(string blobId)
Parameters
Type | Name | Description |
---|---|---|
System.String | blobId |
Returns
Type | Description |
---|---|
BlobInfo |
UpdateBlob(String, String, String, Stream)
Declaration
public BlobInfo UpdateBlob(string blobId, string blobName, string blobType, Stream blobData)
Parameters
Type | Name | Description |
---|---|---|
System.String | blobId | |
System.String | blobName | |
System.String | blobType | |
Stream | blobData |
Returns
Type | Description |
---|---|
BlobInfo |
UpdateBlobAsync(String, String, String, Stream)
Declaration
public Task<BlobInfo> UpdateBlobAsync(string blobId, string blobName, string blobType, Stream blobData)
Parameters
Type | Name | Description |
---|---|---|
System.String | blobId | |
System.String | blobName | |
System.String | blobType | |
Stream | blobData |
Returns
Type | Description |
---|---|
Task<BlobInfo> |