{"id":1077,"date":"2019-08-13T00:00:00","date_gmt":"2019-08-13T07:00:00","guid":{"rendered":"https:\/\/azure.microsoft.com\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency"},"modified":"2025-06-25T06:09:45","modified_gmt":"2025-06-25T13:09:45","slug":"azure-sdk-august-2019-preview-and-a-dive-into-consistency","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/","title":{"rendered":"Azure SDK August 2019 preview and a dive into consistency"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (<a href=\"https:\/\/aka.ms\/azure-sdk-preview2-net\" target=\"_blank\" rel=\"noopener\">.Net<\/a>, <a href=\"https:\/\/aka.ms\/azure-sdk-preview2-java\" target=\"_blank\" rel=\"noopener\">Java<\/a>, <a href=\"https:\/\/aka.ms\/azure-sdk-preview2-js\" target=\"_blank\" rel=\"noopener\">JavaScript<\/a>, <a href=\"https:\/\/aka.ms\/azure-sdk-preview2-python\" target=\"_blank\" rel=\"noopener\">Python<\/a>). These previews contain bug fixes, new features, and additional work towards guidelines adherence.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-s-new\">What\u2019s New<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The SDKs have many new features, bug fixes, and improvements. Some of the new features are below, but please read the release notes linked above and changelogs for details.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Storage Libraries for Java now include Files and Queues support.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Storage Libraries for Python have added Async versions of the APIs for Files, Queues, and Blobs.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Event Hubs libraries across languages have expanded support for sending multiple messages in a single call by adding the ability to create a batch avoiding the error scenario where a call exceeds size limits and giving batch size control to developers with bandwidth concerns.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Event Hubs libraries across languages have introduced a new model for consuming events via the EventProcessor class which simplifies the process of checkpointing today and will handle load balancing across partitions in upcoming previews.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"diving-deeper-into-the-guidelines-consistency\">Diving deeper into the guidelines: consistency<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">These Azure SDKs represent a cross-organizational effort to provide an ergonomic experience to every developer using every platform and as mentioned in the <a href=\"https:\/\/aka.ms\/azure-sdk-preview\" target=\"_blank\" rel=\"noopener\">previous blog post<\/a>, developer feedback helped define the following set of principles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Idiomatic<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Consistent<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Approachable<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Diagnosable<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Compatible<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Today we will deep dive into consistency.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"consistent\">Consistent<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Feedback from developers and user studies have shown that APIs which are consistent are generally easier to learn and remember. In order to guide SDKs from Azure to be consistent, the guidelines contain the <a href=\"https:\/\/azure.github.io\/azure-sdk\/general_introduction.html#consistent\" target=\"_blank\" rel=\"noopener\">consistency principle<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Client libraries should be consistent within the language, consistent with the service and consistent between all target languages. In cases of conflict, consistency within the language is the highest priority and consistency between all target languages is the lowest priority.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Service-agnostic concepts such as logging, HTTP communication, and error handling should be consistent. The developer should not have to relearn service-agnostic concepts as they move between client libraries.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Consistency of terminology between the client library and the service is a good thing that aids in diagnosability.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">All differences between the service and client library must have a good, articulated reason for existing, rooted in idiomatic usage.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">The Azure SDK for each target language feels like a single product developed by a single team.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">There should be feature parity across target languages. This is more important than feature parity with the service.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s look closer at the second bullet point, \u201cService-agnostic concepts such as logging, HTTP communication, and error handling should be consistent.\u201d Developers pointed out APIs that worked nicely on their own, but weren\u2019t always perfectly consistent with each other. For example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Blob storage used a skip\/take style of paging, while returning a sync iterator as the result set:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nlet marker = undefined;\ndo {\n   const listBlobsResponse = await containerURL.listBlobFlatSegment(\n     Aborter.none,\n     marker\n   );\n\n  marker = listBlobsResponse.nextMarker;\n   for (const blob of listBlobsResponse.segment.blobItems) {\n     console.log(`Blob: ${blob.name}`);\n   }\n} while (marker);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cosmos used an async iterator to return results:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nfor await (const results of this.container.items.query(querySpec).getAsyncIterator()){\n         console.log(results.result)\n      }\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Event Hubs used a \u2018take\u2019 style call that returned an array of results of a specified size:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nconst myEvents = await client.receiveBatch(\"my-partitionId\", 10);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">While using all three of these services together, developers indicated they had to work to remember more or refresh their memory by reviewing code samples.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-consistency-sdk-guideline\">The Consistency SDK Guideline<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/azure.github.io\/azure-sdk\/typescript_design.html#ts-modern-javascript\" target=\"_blank\" rel=\"noopener\">JavaScript guidelines<\/a> specify how to handle this situation in the section Modern and Idiomatic JavaScript:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2611\ufe0f YOU SHOULD use async functions for implementing asynchronous library APIs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you need to support ES5 and are concerned with library size, use async when combining asynchronous code with control flow constructs. Use promises for simpler code flows.&nbsp; async adds code bloat (especially when targeting ES5) when transpiled.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2611\ufe0f DO use Iterators and Async Iterators for sequences and streams of all sorts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Both iterators and async iterators are built into JavaScript and easy to consume. Other streaming interfaces (such as node streams) may be used where appropriate as long as they&#8217;re idiomatic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a nutshell, it says when there is an asynchronous call that is a sequence (AKA list), Async Iterators are preferred.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, this is how that principle is applied in the latest Azure SDK Libraries for Storage, Cosmos, and Event Hubs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Storage, using an async iterator to list blobs:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nfor await (const blob of containerClient.listBlobsFlat()) {\n   console.log(`Blob: ${blob.name}`);\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Cosmos, still using async iterators to list items:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nfor await (const resources of resources.\n                                 container.\n                                 items.\n                                 readAll({ maxItemCount: 20 }).\n                                 getAsyncIterator()) {\n     console.log(resources.doc.id)\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Event Hubs \u2013 now using an async iterator to process events:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nfor await (const events of consumer.getEventIterator()){\n     console.log(`${events}`)\n   }\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">As you can see, a service-agnostic concept\u2014in this case paging\u2014has been standardized across all three services.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"feedback\">Feedback<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you have feedback on consistency or think you\u2019ve found a bug after trying the <a href=\"https:\/\/aka.ms\/azure-sdk-releases\" target=\"_blank\" rel=\"noopener\">August 2019 Preview<\/a> (<a href=\"https:\/\/aka.ms\/azure-sdk-preview2-net\" target=\"_blank\" rel=\"noopener\">.Net<\/a>, <a href=\"https:\/\/aka.ms\/azure-sdk-preview2-java\" target=\"_blank\" rel=\"noopener\">Java<\/a>, <a href=\"https:\/\/aka.ms\/azure-sdk-preview2-js\" target=\"_blank\" rel=\"noopener\">JavaScript<\/a>, <a href=\"https:\/\/aka.ms\/azure-sdk-preview2-python\" target=\"_blank\" rel=\"noopener\">Python<\/a>), please file an Issue or pull request on GitHub (<a href=\"https:\/\/github.com\/Azure\/azure-sdk\" target=\"_blank\" rel=\"noopener\">guidelines<\/a>, <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-net\" target=\"_blank\" rel=\"noopener\">.Net<\/a>, <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-java\" target=\"_blank\" rel=\"noopener\">Java<\/a>, <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-js\" target=\"_blank\" rel=\"noopener\">JavaScript<\/a>, <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-python\" target=\"_blank\" rel=\"noopener\">Python<\/a>), or reach out to <a href=\"https:\/\/twitter.com\/azuresdk\" target=\"_blank\" rel=\"noopener\">@AzureSDK<\/a> on Twitter. We welcome contributions to these guidelines and libraries!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (.Net, Java, JavaScript, Python). These previews contain bug fixes, new features, and additional work towards guidelines adherence.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","footnotes":"","msx_community_cta_settings":[]},"categories":[1551],"tags":[],"audience":[3055],"content-type":[],"product":[1627],"tech-community":[],"topic":[],"coauthors":[97],"class_list":["post-1077","post","type-post","status-publish","format-standard","hentry","category-developer-tools","audience-developers","product-sdks","review-flag-1680286581-295","review-flag-1680286584-658","review-flag-alway-1680286580-106","review-flag-new-1680286579-546"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Azure SDK August 2019 preview and a dive into consistency | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (.Net, Java, JavaScript, Python). These previews contain bug fixes, new features, and additional work towards guidelines adherence.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure SDK August 2019 preview and a dive into consistency | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (.Net, Java, JavaScript, Python). These previews contain bug fixes, new features, and additional work towards guidelines adherence.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Azure Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/microsoftazure\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-13T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-25T13:09:45+00:00\" \/>\n<meta name=\"author\" content=\"Microsoft Azure\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@azure\" \/>\n<meta name=\"twitter:site\" content=\"@azure\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Azure\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/microsoft-azure\/\",\"@type\":\"Person\",\"@name\":\"Microsoft Azure\"}],\"headline\":\"Azure SDK August 2019 preview and a dive into consistency\",\"datePublished\":\"2019-08-13T07:00:00+00:00\",\"dateModified\":\"2025-06-25T13:09:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/\"},\"wordCount\":773,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"articleSection\":[\"Developer tools\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/\",\"name\":\"Azure SDK August 2019 preview and a dive into consistency | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"datePublished\":\"2019-08-13T07:00:00+00:00\",\"dateModified\":\"2025-06-25T13:09:45+00:00\",\"description\":\"The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (.Net, Java, JavaScript, Python). These previews contain bug fixes, new features, and additional work towards guidelines adherence.\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Developer tools\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/developer-tools\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Azure SDK August 2019 preview and a dive into consistency\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"name\":\"Microsoft Azure Blog\",\"description\":\"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.\",\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\",\"name\":\"Microsoft Azure Blog\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"width\":512,\"height\":512,\"caption\":\"Microsoft Azure Blog\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/microsoftazure\",\"https:\/\/x.com\/azure\",\"https:\/\/www.instagram.com\/microsoftdeveloper\/\",\"https:\/\/www.linkedin.com\/company\/16188386\",\"https:\/\/www.youtube.com\/user\/windowsazure\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117\",\"name\":\"shakir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"caption\":\"shakir\"},\"sameAs\":[\"https:\/\/azure.microsoft.com\"],\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure SDK August 2019 preview and a dive into consistency | Microsoft Azure Blog","description":"The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (.Net, Java, JavaScript, Python). These previews contain bug fixes, new features, and additional work towards guidelines adherence.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/","og_locale":"en_US","og_type":"article","og_title":"Azure SDK August 2019 preview and a dive into consistency | Microsoft Azure Blog","og_description":"The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (.Net, Java, JavaScript, Python). These previews contain bug fixes, new features, and additional work towards guidelines adherence.","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2019-08-13T07:00:00+00:00","article_modified_time":"2025-06-25T13:09:45+00:00","author":"Microsoft Azure","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Microsoft Azure","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/microsoft-azure\/","@type":"Person","@name":"Microsoft Azure"}],"headline":"Azure SDK August 2019 preview and a dive into consistency","datePublished":"2019-08-13T07:00:00+00:00","dateModified":"2025-06-25T13:09:45+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/"},"wordCount":773,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"articleSection":["Developer tools"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/","name":"Azure SDK August 2019 preview and a dive into consistency | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"datePublished":"2019-08-13T07:00:00+00:00","dateModified":"2025-06-25T13:09:45+00:00","description":"The second previews of Azure SDKs which follow the latest Azure API Guidelines and Patterns are now available (.Net, Java, JavaScript, Python). These previews contain bug fixes, new features, and additional work towards guidelines adherence.","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-sdk-august-2019-preview-and-a-dive-into-consistency\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"Developer tools","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/developer-tools\/"},{"@type":"ListItem","position":3,"name":"Azure SDK August 2019 preview and a dive into consistency"}]},{"@type":"WebSite","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","name":"Microsoft Azure Blog","description":"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.","publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization","name":"Microsoft Azure Blog","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","width":512,"height":512,"caption":"Microsoft Azure Blog"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/microsoftazure","https:\/\/x.com\/azure","https:\/\/www.instagram.com\/microsoftdeveloper\/","https:\/\/www.linkedin.com\/company\/16188386","https:\/\/www.youtube.com\/user\/windowsazure"]},{"@type":"Person","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117","name":"shakir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4","url":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","caption":"shakir"},"sameAs":["https:\/\/azure.microsoft.com"],"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/"}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Azure Blog","distributor_original_site_url":"https:\/\/azure.microsoft.com\/en-us\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/1077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/comments?post=1077"}],"version-history":[{"count":2,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/1077\/revisions"}],"predecessor-version":[{"id":43341,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/1077\/revisions\/43341"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=1077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=1077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=1077"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=1077"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=1077"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=1077"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=1077"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=1077"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=1077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}