{"id":1564,"date":"2014-12-16T19:24:12","date_gmt":"2014-12-16T19:24:12","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1564"},"modified":"2025-06-13T23:50:21","modified_gmt":"2025-06-14T06:50:21","slug":"couchbase-net-sdk-20-developer-preview-3","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-3\/","title":{"rendered":"Couchbase .NET SDK 2.0 Developer Preview 3"},"content":{"rendered":"<p>Como continua\u00e7\u00e3o do DP2 anterior, em junho, estamos lan\u00e7ando outra pr\u00e9via para desenvolvedores, o DP3. Essa visualiza\u00e7\u00e3o para desenvolvedores adiciona uma infinidade de corre\u00e7\u00f5es de bugs, recursos e, o mais importante, altera\u00e7\u00f5es na API p\u00fablica por meio de a) fornecimento de m\u00e9todos para trabalhar com \"documentos\" e b) altera\u00e7\u00e3o da maneira como um objeto de cluster \u00e9 instanciado. Tamb\u00e9m movemos o reposit\u00f3rio de <a href=\"https:\/\/github.com\/couchbaselabs\/\">CouchbaseLabs<\/a> para <a href=\"https:\/\/github.com\/couchbaselabs\/\">Couchbase<\/a> no Github; falarei sobre isso um pouco mais tarde.<\/p>\n<h2>Documentos, documentos em todos os lugares!<\/h2>\n<p>Uma das principais mudan\u00e7as nessa pr\u00e9via para desenvolvedores e uma diferen\u00e7a em rela\u00e7\u00e3o ao SDK .NET anterior \u00e9 a evolu\u00e7\u00e3o do Couchbase de um armazenamento de chave\/valor para um banco de dados de documentos, o que, por sua vez, se reflete nas APIs p\u00fablicas. Isso significa que agora temos m\u00e9todos que recebem e retornam um objeto de documento em vez de um par K\/V. Todas as outras vantagens do Couchbase, como CAS, restri\u00e7\u00f5es de durabilidade e outros recursos, ainda s\u00e3o oferecidas, mas agora as agrupamos em um \u00fanico objeto \"documento\", a partir do qual, ao configurar as v\u00e1rias propriedades, voc\u00ea obt\u00e9m o comportamento que deseja.<\/p>\n<p>Para dar suporte ao conceito de \"documento\", uma s\u00e9rie de m\u00e9todos baseados em documentos foi adicionada \u00e0 interface do IBucket que d\u00e1 suporte a uma nova classe Document:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3555\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/doucment-classes.png\" alt=\"document-classes\" width=\"718\" height=\"600\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/doucment-classes.png 718w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/doucment-classes-300x251.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/doucment-classes-20x17.png 20w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/p>\n<p>O resultado de uma chamada usando um desses novos m\u00e9todos de documento \u00e9 um objeto DocumentResult, que \u00e9 semelhante ao objeto OperationResult retornado pelos outros m\u00e9todos K\/V. A diferen\u00e7a \u00e9 que o campo Document \u00e9 uma refer\u00eancia a um documento. Se voc\u00ea quiser obter diretamente o valor do documento (o valor de T), use o campo Value.<\/p>\n<p>Por exemplo, veja como voc\u00ea poderia agora (usando o DP3) armazenar um documento JSON no Couchbase usando o m\u00e9todo Upsert:<\/p>\n<div class=\"geshifilter\">\n<div class=\"csharp geshifilter-csharp\" style=\"font-family: monospace\">\u00a0<span style=\"color: #0600ff;font-weight: bold\">usando<\/span> <span style=\"color: #008000\">(<\/span>var bucket <span style=\"color: #008000\">=<\/span> _cluster<span style=\"color: #008000\">.<\/span><span style=\"color: #0000ff\">OpenBucket<\/span><span style=\"color: #008000\">(<\/span><span style=\"color: #008000\">)<\/span><span style=\"color: #008000\">)<\/span><br \/>\n<span style=\"color: #008000\">{<\/span><br \/>\nvar document <span style=\"color: #008000\">=<\/span> <a href=\"https:\/\/www.google.com\/search?q=new+msdn.microsoft.com\"><span style=\"color: #008000\">novo<\/span><\/a> Documento<span style=\"color: #008000\">&lt;<\/span>din\u00e2mico<span style=\"color: #008000\">&gt;<\/span><br \/>\n<span style=\"color: #008000\">{<\/span><br \/>\nId <span style=\"color: #008000\">=<\/span> <span style=\"color: #666666\">\"person1\"<\/span>,<br \/>\nValor <span style=\"color: #008000\">=<\/span> <a href=\"https:\/\/www.google.com\/search?q=new+msdn.microsoft.com\"><span style=\"color: #008000\">novo<\/span><\/a><br \/>\n<span style=\"color: #008000\">{<\/span><br \/>\nNome <span style=\"color: #008000\">=<\/span> <span style=\"color: #666666\">\"Jeff\"<\/span>, Idade <span style=\"color: #008000\">=<\/span> <span style=\"color: #ff0000\">22<\/span><br \/>\n<span style=\"color: #008000\">}<\/span><br \/>\n<span style=\"color: #008000\">}<\/span><span style=\"color: #008000\">;<\/span>var result <span style=\"color: #008000\">=<\/span> balde<span style=\"color: #008000\">.<\/span><span style=\"color: #0000ff\">Upsert<\/span><span style=\"color: #008000\">(<\/span>documento<span style=\"color: #008000\">)<\/span><span style=\"color: #008000\">;<\/span><br \/>\n<span style=\"color: #008000\">}<\/span><\/div>\n<\/div>\n<p>Se voc\u00ea estiver se perguntando, Upsert() \u00e9 um m\u00e9todo que insere ou atualiza um documento, dependendo se ele existe ou n\u00e3o. Outros m\u00e9todos baseados em documentos incluem:<\/p>\n<ul>\n<li>Insert(): insere um documento, caso ele n\u00e3o exista.<\/li>\n<li>Replace(): substitui um documento existente, falhando se ele n\u00e3o existir.<\/li>\n<li>Remove(): remove um documento se ele existir.<\/li>\n<li>GetDocument(): retorna um documento para um determinado id.<\/li>\n<\/ul>\n<p>Isso significa que o Couchbase n\u00e3o est\u00e1 mais oferecendo suporte \u00e0s opera\u00e7\u00f5es tradicionais do Memcached baseadas em K\/V? Absolutamente n\u00e3o! As APIs ainda oferecer\u00e3o suporte a essas opera\u00e7\u00f5es; no entanto, a esperan\u00e7a \u00e9 que a nova abordagem baseada em \"documentos\" facilite o uso das APIs e do Couchbase em geral para uma variedade maior de aplicativos. No m\u00ednimo, ela deve tornar a sem\u00e2ntica do trabalho com documentos JSON mais simples de entender e mais intuitiva.<\/p>\n<h2>Singleton's? N\u00e3o precisamos de Singleton's fedorentos!<\/h2>\n<p>No DP1 e no DP2, para instanciar um objeto CouchbaseCluster, j\u00e1 que ele era um Singleton de carregamento lento, voc\u00ea primeiro criava uma ClientConfiguration e a passava para o m\u00e9todo est\u00e1tico Initialize() e, em seguida, chamava Get() na classe CouchbaseCluster para obter uma refer\u00eancia ao objeto do cluster. Embora a inten\u00e7\u00e3o fosse boa (garantir que o CouchbaseCluster fosse um objeto global), as desvantagens tornaram essa escolha de design menos do que estelar: isso significava que voc\u00ea poderia ter um e somente um objeto CouchbaseCluster por AppDomain (e se voc\u00ea tivesse dois clusters separados do Couchbase que estivesse usando em um \u00fanico aplicativo?<\/p>\n<p>No DP3, decidimos acabar com o requisito expl\u00edcito de um Singleton e, em vez disso, dividimos a classe em uma classe CouchbaseCluster padr\u00e3o, sem limites para o n\u00famero que poderia ser instanciado, e uma classe ClusterHelper, que \u00e9 um singleton de wrapper em torno do CouchbaseCluster, caso voc\u00ea queira ter certeza de que apenas uma inst\u00e2ncia ser\u00e1 criada. O melhor dos dois mundos.<\/p>\n<p>Aqui est\u00e1 um exemplo de cria\u00e7\u00e3o de um objeto CouchbaseCluster no DP3:<\/p>\n<div class=\"geshifilter\">\n<div class=\"csharp geshifilter-csharp\" style=\"font-family: monospace\">\u00a0var configura\u00e7\u00e3o <span style=\"color: #008000\">=<\/span> <a href=\"https:\/\/www.google.com\/search?q=new+msdn.microsoft.com\"><span style=\"color: #008000\">novo<\/span><\/a> Configura\u00e7\u00e3o de cliente<span style=\"color: #008000\">(<\/span><span style=\"color: #008000\">)<\/span><span style=\"color: #008000\">;<\/span><br \/>\nvar cluster <span style=\"color: #008000\">=<\/span> <a href=\"https:\/\/www.google.com\/search?q=new+msdn.microsoft.com\"><span style=\"color: #008000\">novo<\/span><\/a> CouchbaseCluster<span style=\"color: #008000\">(<\/span>configura\u00e7\u00e3o<span style=\"color: #008000\">)<\/span><span style=\"color: #008000\">;<\/span><\/div>\n<\/div>\n<p>Aqui est\u00e1 um exemplo de uso da classe ClusterHelper para garantir que apenas um \u00fanico objeto CouchbaseCluster seja criado por AppDomain:<\/p>\n<div class=\"geshifilter\">\n<div class=\"csharp geshifilter-csharp\" style=\"font-family: monospace\">\u00a0Ajudante de cluster<span style=\"color: #008000\">.<\/span><span style=\"color: #0000ff\">Inicializar<\/span><span style=\"color: #008000\">(<\/span><span style=\"color: #008000\">)<\/span><span style=\"color: #008000\">;<\/span><br \/>\nvar cluster <span style=\"color: #008000\">=<\/span> Ajudante de cluster<span style=\"color: #008000\">.<\/span><span style=\"color: #0000ff\">Obter<\/span><span style=\"color: #008000\">(<\/span><span style=\"color: #008000\">)<\/span><span style=\"color: #008000\">;<\/span><\/div>\n<\/div>\n<p>Se estiver se perguntando por que inclu\u00edmos um objeto ClusterHelper? \u00c9 porque o objeto CouchbaseCluster \u00e9 um objeto muito caro para criar e funciona melhor quando \u00e9 criado quando o aplicativo \u00e9 iniciado e \u00e9 destru\u00eddo quando o aplicativo \u00e9 encerrado. Falarei mais sobre isso em um post futuro!<\/p>\n<h2>Experimente (e forne\u00e7a feedback)!<\/h2>\n<p>Baixe os bin\u00e1rios abaixo ou confira o c\u00f3digo-fonte no Github e diga-nos o que achou. Al\u00e9m disso, n\u00e3o se esque\u00e7a de que este \u00e9 um pr\u00e9-lan\u00e7amento e as coisas definitivamente mudar\u00e3o antes do Beta e do GA. A maioria das altera\u00e7\u00f5es ser\u00e1 interna, especialmente em rela\u00e7\u00e3o \u00e0s partes de IO e namespaces. Dependendo do feedback da comunidade, as interfaces p\u00fablicas tamb\u00e9m poder\u00e3o ser alteradas.<\/p>\n<p><em><strong>Por favor, n\u00e3o use isso na produ\u00e7\u00e3o<\/strong><\/em> Al\u00e9m disso, embora a funcionalidade b\u00e1sica funcione, o c\u00f3digo ainda n\u00e3o passou por um conjunto exaustivo de testes situacionais, de modo que as coisas podem falhar durante um cen\u00e1rio de Failover\/Swap\/Rebalance.<\/p>\n<h2>Fonte e bin\u00e1rios<\/h2>\n<ul>\n<li>Observe que a ramifica\u00e7\u00e3o de desenvolvimento do SDK 2.0 agora \u00e9 a <strong><a href=\"https:\/\/github.com\/couchbase\/couchbase-net-client\/tree\/master\">mestre<\/a><\/strong> no Github e o ramo de desenvolvimento 1.X agora \u00e9 chamado de <strong><a href=\"https:\/\/github.com\/couchbase\/couchbase-net-client\/tree\/release13\">libera\u00e7\u00e3o13<\/a><\/strong>.<\/li>\n<li>Se voc\u00ea encontrar um bug, crie uma solicita\u00e7\u00e3o pull e\/ou e <strong><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/issues\/browse\/NCBC\/\">NCBC<\/a><\/strong>.<\/li>\n<li>Os bin\u00e1rios podem ser encontrados <strong><a href=\"https:\/\/tinyurl.com\/l4pp6z7\">aqui.<\/a><\/strong><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>As a follow to the previous DP2 in June, we are releasing another developer preview, DP3. This developer preview, adds a plethora of bug fixes, features and most importantly, changes to the public API by way of a) providing methods [&hellip;]<\/p>","protected":false},"author":21,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811],"tags":[],"ppma_author":[8970],"class_list":["post-1564","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase .NET SDK 2.0 Developer Preview 3 - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-3\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase .NET SDK 2.0 Developer Preview 3\" \/>\n<meta property=\"og:description\" content=\"As a follow to the previous DP2 in June, we are releasing another developer preview, DP3. This developer preview, adds a plethora of bug fixes, features and most importantly, changes to the public API by way of a) providing methods [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-3\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:24:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:50:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/doucment-classes.png\" \/>\n\t<meta property=\"og:image:width\" content=\"718\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jeffrysmorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Couchbase .NET SDK 2.0 Developer Preview 3\",\"datePublished\":\"2014-12-16T19:24:12+00:00\",\"dateModified\":\"2025-06-14T06:50:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/\"},\"wordCount\":898,\"commentCount\":7,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\".NET\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/\",\"name\":\"Couchbase .NET SDK 2.0 Developer Preview 3 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:24:12+00:00\",\"dateModified\":\"2025-06-14T06:50:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase .NET SDK 2.0 Developer Preview 3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\",\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, Senior Software Engineer, Couchbase\"},\"description\":\"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).\",\"sameAs\":[\"https:\/\/x.com\/jeffrysmorris\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/jeff-morris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase .NET SDK 2.0 Developer Preview 3 - The Couchbase Blog","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:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-3\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase .NET SDK 2.0 Developer Preview 3","og_description":"As a follow to the previous DP2 in June, we are releasing another developer preview, DP3. This developer preview, adds a plethora of bug fixes, features and most importantly, changes to the public API by way of a) providing methods [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-3\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:24:12+00:00","article_modified_time":"2025-06-14T06:50:21+00:00","og_image":[{"width":718,"height":600,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/doucment-classes.png","type":"image\/png"}],"author":"Jeff Morris, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@jeffrysmorris","twitter_misc":{"Written by":"Jeff Morris, Senior Software Engineer, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Couchbase .NET SDK 2.0 Developer Preview 3","datePublished":"2014-12-16T19:24:12+00:00","dateModified":"2025-06-14T06:50:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/"},"wordCount":898,"commentCount":7,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":[".NET"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/","name":"Couchbase .NET SDK 2.0 Developer Preview 3 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:24:12+00:00","dateModified":"2025-06-14T06:50:21+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase .NET SDK 2.0 Developer Preview 3"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341","name":"Jeff Morris, engenheiro de software s\u00eanior, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812","url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","caption":"Jeff Morris, Senior Software Engineer, Couchbase"},"description":"Jeff Morris \u00e9 engenheiro de software s\u00eanior da Couchbase. Antes de ingressar na Couchbase, Jeff passou seis anos na Source Interlink como arquiteto da Web corporativa. Jeff \u00e9 respons\u00e1vel pelo desenvolvimento dos SDKs do Couchbase e pela integra\u00e7\u00e3o com o N1QL (linguagem de consulta).","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/jeff-morris\/"}]}},"authors":[{"term_id":8970,"user_id":21,"is_guest":0,"slug":"jeff-morris","display_name":"Jeff Morris, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","first_name":"Jeff","last_name":"Jeff Morris, Senior Software Engineer, Couchbase","user_url":"","author_category":"","description":"Jeff Morris \u00e9 engenheiro de software s\u00eanior da Couchbase. Antes de ingressar na Couchbase, Jeff passou seis anos na Source Interlink como arquiteto da Web corporativa. Jeff \u00e9 respons\u00e1vel pelo desenvolvimento dos SDKs do Couchbase e pela integra\u00e7\u00e3o com o N1QL (linguagem de consulta)."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1564"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1564\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1564"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}