ASP.NET MVC / WebApi的Azure表存储最佳实践
从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存储模拟器. 我是在正确的轨道上还是有更好的连接方式? 解决方法
其实你的问题
可以像“在Web应用程序中使用数据访问层的最佳实践”一样进行重述.这是相同的. 您可以找到有关数据访问层最佳实践的大量答案.但是,铁规则会将您的数据访问层与您的控制器或演示文稿分开.在MVC模式范围内通过Model使用它的最佳方法,或者如果您喜欢它们,您可以考虑Repository和/或Unit of work模式. 在您的示例中,您的数据访问逻辑已经包含在StorageContext中,这很好,我还要提取接口并使用DI / IoC和依赖解析器.这就是谈论你的代码片段时的全部内容.你正确的方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 来自控制器的ASP.NET MVC3 View的物理位置
- asp.net-mvc-5 – nuget中用于与WEB API集成的Ninject包中有
- asp.net-mvc – 要查看的ASP.NET MVC 2控制器:IList还是Li
- asp.net – 不允许从数据类型sql_variant到uniqueidentifie
- razor – 从ASP.net Core 2中的视图访问自定义ApplicationU
- asp.net-mvc-3 – 如何在乌节项目中完成多租户
- asp.net – 将ViewModel从演示文稿传递到服务 – 是否可以?
- asp.net – SignalR并不总是准备好后start().done()?
- asp.net-mvc-4 – Kendo UI组合框复位值
- asp.net-mvc – System.Web.Mvc.ActionFilterAttribute vs