c# - 存储客户端库 2.0 - 为什么 API 使用起来不如 1.7 那么直观?

标签 c# .net azure azure-storage azure-table-storage

我正在迁移到对我的 Azure 表存储使用新的存储客户端库。

使用之前的Storage Client Library 1.7命名空间进行查询:

var orders = serviceContext
                 .CreateQuery<Order>(tableName)
                 .AsTableServiceQuery<Order>()
                 .Where(e => e.PartitionKey == partitionKey && e.RowKey == rowKey)

使用新的Storage Client Library 2.0类进行查询:

string partitionKeyFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey);
string rowKeyFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey);
string combinedFilter = TableQuery.CombineFilters(partitionKeyFilter, TableOperators.And, rowKeyFilter);

var query = new TableQuery<Order>().Where(combinedFilter);
var orders = table.ExecuteQuery<Order>(query);

如果我错了,请纠正我,但 1.7 更干净,使用强类型实体,实现 IQueryable 接口(interface)并利用 LINQ 的全部功能。 2.0 版让我感觉自己又在使用 ADO.NET 数据集了。

我完全错过了这里的情节吗?我知道性能有了重大改进,但为什么 2.0 版本感觉像是 API 的降级?

最佳答案

存储客户端库 2.0 仍然包含不同命名空间中的旧版 DataServices 实现。另一方面,与更新的 DataServices 实现和 SDK 的早期版本相比,新的表实现显示出显着的性能改进。根据操作的不同,延迟改善了 25% 到 75%,同时系统资源利用率也显着降低。

请引用Windows Azure Storage Client Library 2.0 Tables Deep Dive博客文章以获取更多信息。正如博文中还提到的,如果您更喜欢 LINQ,您仍然可以使用已迁移到 Microsoft.WindowsAzure.Storage.Table.DataServices 命名空间的旧版 DataServices 实现。

新表服务层中的 IQueryable 支持目前正在开发中。目前我们没有任何更具体的时间表细节可以分享。

关于c# - 存储客户端库 2.0 - 为什么 API 使用起来不如 1.7 那么直观?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097902/

相关文章:

c# - 我们如何将这个Scheme (Lisp) 函数转换为C#

c# - asp.Net 如何将数据保存到 Controller 中的联结表

c# - 澄清 IL 生成的引用字符串的代码

c# - 未能为字段分配正确的值?

asp.net-mvc - 使用 Azure AD 对内部和外部用户进行身份验证

Azure CLI 2.0 连接错误

C#:Server.Mappath 如何读取文件?

c# - 一个Windows服务中的多个服务进程(System.ServiceProcess.ServiceBase)

android - 在 Android 中使用 Azure 存储获取上传进度

c# - Local/Express IIS/External Host 分别带来了什么?