Azure表存储的最佳实践.净MVC /之前



从ASP连接到Azure表存储的最佳实践是什么?. NET MVC或Web API应用程序?

现在我已经做了一个StorageContext类,它持有对CloudStorageAccountCloudTableClient的引用,像这样:

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存储模拟器。

我是在正确的轨道上还是有更好的方式连接?

你的问题

连接到Azure表存储的最佳实践是什么从ASP。. NET MVC或Web API应用程序?

可以重述为"在web应用程序中使用数据访问层的最佳实践是什么"。

你可以找到很多关于数据访问层最佳实践的答案。但这里的铁律是将数据访问层与控制器或表示分开。最好的方法是在MVC模式的范围内通过模型来使用它,或者如果你喜欢的话,你也可以考虑Repository和/或Unit of work模式。

在您的示例中,您的数据访问逻辑已经包装在StorageContext中,这很好,我将额外提取接口并使用DI/IoC和依赖解析器。这就是关于代码片段的所有内容。

相关内容

  • 没有找到相关文章

最新更新