加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:40:34 所属栏目:asp.Net 来源:网络整理
导读:从ASP.NET MVC或Web API应用程序连接到Azure表存储的最佳实践是什么? 现在我已经创建了一个StorageContext类,它包含对CloudStorageAccount和CloudTableClient的引用,如下所示: public class StorageContext{ private static CloudStorageAccount _storageA
从ASP.NET MVC或Web API应用程序连接到Azure表存储的最佳实践是什么?

现在我已经创建了一个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 req / sec.

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

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

解决方法

其实你的问题

What are the best practices for connecting to a Azure Table Storage
from a ASP.NET MVC or Web API app?

可以像“在Web应用程序中使用数据访问层的最佳实践”一样进行重述.这是相同的.

您可以找到有关数据访问层最佳实践的大量答案.但是,铁规则会将您的数据访问层与您的控制器或演示文稿分开.在MVC模式范围内通过Model使用它的最佳方法,或者如果您喜欢它们,您可以考虑Repository和/或Unit of work模式.

在您的示例中,您的数据访问逻辑已经包含在StorageContext中,这很好,我还要提取接口并使用DI / IoC和依赖解析器.这就是谈论你的代码片段时的全部内容.你正确的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读