Storage Client Library 2.0 - 为什么API不像1.7那样直观?

时间:2013-02-26 19:46:01

标签: 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接口并利用LINQ的全部功能。版本2.0让我觉得我再次使用ADO.NET数据集。

我完全错过了这里的情节吗?我知道已经有了重大的性能改进,但为什么版本2.0会像API一样降级呢?

2 个答案:

答案 0 :(得分:3)

Storage Client Library 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支持目前正在开发中。我们目前没有更具体的时间表细节。

答案 1 :(得分:2)

相关问题