云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云服务器_淄博网站建设优化_价格

小七 141 0

Azure SDK 2019年8月预览版和一致性探讨

遵循最新的azureapi指南和模式的azuresdk的第二个预览版现在可以使用(.Net、Java、JavaScript、Python)。这些预览包含错误修复、新特性和遵循准则的附加工作。新增功能sdk有许多新特性、错误修复和改进。下面是一些新特性,但请阅读上面链接的发行说明和更改日志以获取详细信息。Java存储库现在包括文件和队列支持。Python存储库为文件、队列和blob添加了api的异步版本。跨语言的事件集线器库扩展了对在单个调用中发送多条消息的支持,它增加了创建批处理的能力,避免了调用超出大小限制的错误场景,并为有带宽问题的开发人员提供了批处理大小控制。跨语言的事件集线器库引入了一种通过EventProcessor类消费事件的新模型,该模型简化了当前检查点的过程,并将在即将到来的预览中处理跨分区的负载平衡。深入研究指南:一致性这些Azure sdk代表了一种跨组织的努力,旨在为使用每个平台的每个开发人员提供符合人体工程学的体验,正如前一篇博客文章所述,开发人员反馈帮助定义了以下一组原则:惯用的始终如一平易近人可诊断的兼容的今天我们将深入探讨一致性。始终如一来自开发人员和用户研究的反馈表明,一致的api通常更容易学习和记忆。为了引导来自Azure的SDK保持一致,准则包含一致性原则:客户端库应该在语言内保持一致,与服务一致,并且在所有目标语言之间保持一致。在冲突的情况下,语言内部的一致性是最高优先级,所有目标语言之间的一致性是最低优先级。与服务无关的概念(如日志记录、HTTP通信和错误处理)应该是一致的。开发人员不应该在客户端库之间移动时重新学习与服务无关的概念。客户端库和服务之间术语的一致性有助于提高可诊断性。服务和客户机库之间的所有差异都必须有一个明确的存在原因,根源于惯用用法。每种目标语言的azuresdk感觉就像是由一个团队开发的单一产品。目标语言之间应该有功能对等。这比与服务的功能对等更重要。让我们仔细看看第二个要点,"与服务无关的概念,如日志记录、HTTP通信和错误处理应该是一致的。"开发人员指出,API本身运行良好,但并不总是彼此完全一致。例如:Blob存储使用了skip/take分页方式,同时返回一个sync迭代器作为结果集:让标记=未定义;做{const listBlobsResponse=等待containerURL.listBlobFlatSegment(     中止。无,记号笔   );标记=listBlobsResponse.nextMarker;for(const blob of列表BlobsResponse.segment.blobItems) {     控制台.log(`Blob:${blob.名称}`);   }}while(标记); Cosmos使用异步迭代器返回结果:等待(const结果this.container.items.query(querySpec).getAsyncIterator()){         控制台.log(结果。结果)      } 事件中心使用"take"样式调用,该调用返回指定大小的结果数组:const myEvents=等待client.receiveBatch("我的分区ID",10); 当同时使用这三种服务时,开发人员表示他们必须通过查看代码示例来记住更多或刷新内存。一致性SDK指南JavaScript指南在现代和惯用JavaScript部分指定了如何处理这种情况:☑️ 您应该使用异步函数来实现异步库API。如果您需要支持ES5并关注库大小,请在将异步代码与控制流构造结合时使用异步。将承诺用于更简单的代码流。async在传输时会添加代码膨胀(尤其是针对ES5时)。☑️ 一定要对各种序列和流使用迭代器和异步迭代器。迭代器和异步迭代器都内置在JavaScript中,易于使用。其他流接口(如节点流)可以在适当的地方使用,只要它们是惯用的。简单地说,当有一个异步调用是一个序列(AKA list)时,最好使用异步迭代器。在实践中,这就是这个原则在最新的azuresdk库中的应用,这些库用于存储、Cosmos和事件中心。存储,使用异步迭代器列出blob:等待(const blob ofcontainerClient.listBlobsFlat()) {   控制台.log(`Blob:${blob.名称}`);} Cosmos,仍然使用异步迭代器列出项目:等待(资源的资源。集装箱。项目。readAll({maxItemCount:20})。getAsyncIterator()){     控制台.log(资源.doc.id)} 事件集线器–现在使用异步迭代器来处理事件:等待(const事件consumer.getEventIterator()){     控制台.log(`${events}`)   }如您所见,在本例中,一个与服务无关的概念已经在所有三个服务中进行了标准化。反馈如果您对一致性有反馈,或者在尝试了2019年8月的预览版(.Net、Java、JavaScript、Python)后发现了一个bug,请在GitHub上(guidelines、.Net、Java、JavaScript、Python)提交一个问题或请求,或者联系Twitter上的@AzureSDK。我们欢迎对这些指南和库的贡献!