存储客户端库2.0 -为什么API不如1.7那样直观

本文关键字:不如 直观 API 为什么 客户端 存储 | 更新日期: 2023-09-27 18:01:20

我正在迁移到使用新的存储客户端库作为我的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版本感觉像是降级了呢?

存储客户端库2.0 -为什么API不如1.7那样直观

Storage Client Library 2.0仍然在不同的命名空间中包含遗留的datasservices实现。另一方面,与更新后的datasservices实现和以前版本的SDK相比,新的表实现显示出了显著的性能改进。根据操作延迟提高了25%到75%,同时系统资源利用率也显著降低。

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

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

相关的,包含表服务层的IQueryable(有一些非常甜蜜的优化)的2.1 RC现在可用。看到

http://blogs.msdn.com/b/windowsazurestorage/archive/2013/07/12/introducing -存储-客户-图书馆- 2 - 1 - rc - -网-和- windows -电话- 8. - aspx

http://www.nuget.org/packages/WindowsAzure.Storage