Azure 存储访问类库实现

在本文中,将探讨如何创建一个类库来封装对Azure存储的访问,并使用NuGet包进行配置。将通过C#语言实现这一过程,以便在ASP.NET Core Web应用程序中使用。

创建类库

首先,需要创建一个类库项目。在Visual Studio中,选择“文件”->“新建”->“项目”,然后选择“类库(.NET Core)”。

添加NuGet包

接下来,需要添加Azure存储的NuGet包。在项目中右键点击“依赖项”,然后选择“管理NuGet包”。搜索并安装“WindowsAzure.Storage”包。

封装设置

需要创建一个类来封装Azure存储的设置。这个类将包含存储账户、存储密钥和表名。

public class AzureTableSettings { public AzureTableSettings(string storageAccount, string storageKey, string tableName) { if (string.IsNullOrEmpty(storageAccount)) throw new ArgumentNullException("StorageAccount"); if (string.IsNullOrEmpty(storageKey)) throw new ArgumentNullException("StorageKey"); if (string.IsNullOrEmpty(tableName)) throw new ArgumentNullException("TableName"); this.StorageAccount = storageAccount; this.StorageKey = storageKey; this.TableName = tableName; } public string StorageAccount { get; } public string StorageKey { get; } public string TableName { get; } }

封装存储访问

接下来,需要创建一个类来封装对Azure存储的访问。这个类将包含一个私有的辅助方法来访问存储。

private async Task<CloudTable> GetTableAsync() { CloudStorageAccount storageAccount = new CloudStorageAccount( new StorageCredentials(this.settings.StorageAccount, this.settings.StorageKey), false); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference(this.settings.TableName); await table.CreateIfNotExistsAsync(); return table; }

添加公共方法

现在,需要添加一些公共方法来实现存储的CRUD操作。

public async Task<List<T>> GetList() { CloudTable table = await GetTableAsync(); TableQuery<T> query = new TableQuery<T>(); List<T> results = new List<T>(); TableContinuationToken continuationToken = null; do { TableQuerySegment<T> queryResults = await table.ExecuteQuerySegmentedAsync(query, continuationToken); continuationToken = queryResults.ContinuationToken; results.AddRange(queryResults.Results); } while (continuationToken != null); return results; }

注入和使用存储

public void ConfigureServices(IServiceCollection services) { services.AddScoped<IAzureTableStorage<Movie>>(factory => { return new AzureTableStorage<Movie>( new AzureTableSettings( storageAccount: Configuration["Table_StorageAccount"], storageKey: Configuration["Table_StorageKey"], tableName: Configuration["Table_TableName"] )); }); services.AddScoped<IMovieService, MovieService>(); services.AddMvc(); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485