如何在ASP.NET MVC或Web API应用程序中连接到Azure Table Storage的最佳实践是什么?
目前,我已经创建了一个StorageContext类,它持有对CloudStorageAccount和CloudTableClient的引用,如下所示:
public class StorageContext
{
private static CloudStorageAccount _storageAccount;
private static CloudTableClient _tableClient;
public StorageContext() : this("StorageConnectionString") { }
public StorageContext(string connectionString)
{
if (_storageAccount == null)
_storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings[connectionString].ConnectionString);
if (_tableClient == null)
_tableClient = _storageAccount.CreateCloudTableClient();
}
public CloudTable Table(string tableName)
{
var table = _tableClient.GetTableReference(tableName);
table.CreateIfNotExists();
return table;
}
}
我正在这样使用我的控制器:
public class HomeController : ApiController
{
private StorageContext db;
public HomeController() : this(new StorageContext()) { }
public HomeController(StorageContext context)
{
this.db = context;
}
public IHttpActionResult Get()
{
var table = db.Table("users");
var results = (from user in table.CreateQuery<User>()
select user).Take(10).ToList();
return Ok<List<User>>(results);
}
}
这是做这件事情的首选方式吗?
API将在高流量网站上使用,每秒请求数> 1000。
我还需要单元测试。像上面那样使用它,我可以传递另一个connString名称,并在我的单元测试中连接到Azure存储模拟器。
我走在正确的道路上还是有更好的连接方式?