首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于ASP.NET MVC/WebApi的Azure表存储最佳实践

基于ASP.NET MVC/WebApi的Azure表存储最佳实践
EN

Stack Overflow用户
提问于 2014-07-08 08:12:10
回答 1查看 2.9K关注 0票数 4

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

现在,我已经创建了一个包含CloudStorageAccountCloudTableClient,引用的StorageContext类,如下所示:

代码语言:javascript
复制
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;
    }
}

我的控制器--我是这样用的:

代码语言:javascript
复制
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 req/秒的高流量站点。

我还需要单元测试。像上面一样使用它,我可以传入另一个connString名称,而不是连接到单元测试中的Azure存储模拟器。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 08:47:47

其实你的问题

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

可以重述“web应用程序中使用数据访问层的最佳实践是什么”。这是一样的。

您可以找到很多关于数据访问层最佳实践的答案。但是这里的铁规则使您的数据访问层与控制器或演示文稿分离。在MVC模式范围内通过模型使用它的最佳方法,或者您可以考虑仓库和/或工作单元模式(如果您喜欢的话)。

在您的示例中,您的数据访问逻辑已经包装在StorageContext中,这很好,我将另外提取接口,并使用DI/IoC和依赖项解析器。在谈到您的代码片段时,就是这样。你在正确的道路上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24626749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档