{"id":1563,"date":"2014-12-16T19:24:07","date_gmt":"2014-12-16T19:24:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1563"},"modified":"2025-06-13T23:50:22","modified_gmt":"2025-06-14T06:50:22","slug":"couchbase-net-sdk-20-developer-preview-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-1\/","title":{"rendered":"Couchbase .NET SDK 2.0 Developer Preview 1"},"content":{"rendered":"<p>Finalmente, apresentamos o Developer Preview 1 (DP1) oficial do SDK do Couchbase .NET 2.0! Anteriormente, eu <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/introducing-couchbase-net-sdk-20-development-blog-serie\/\" target=\"_blank\" rel=\"noopener noreferrer\">publicado<\/a> sobre algumas das motiva\u00e7\u00f5es por tr\u00e1s da reescrita do SDK do Couchbase .NET e tamb\u00e9m sobre alguns dos objetivos e recursos que voc\u00ea deve esperar encontrar nele.  Este DP1 representa o <strong>subconjunto m\u00ednimo de recursos<\/strong> prometido e deve lhe dar uma ideia da dire\u00e7\u00e3o que estamos tomando para a API do ponto de vista do desenvolvedor. Nesta publica\u00e7\u00e3o, mostrarei como come\u00e7ar a trabalhar com uma pr\u00e9via do novo cliente e mostrarei alguns desses recursos.<\/p>\n<h2>Aviso: N\u00e3o use a DP1 na produ\u00e7\u00e3o!<\/h2>\n<p>A n\u00e3o ser, \u00e9 claro, que voc\u00ea goste de trabalhar com tesouras e que noites sem dormir depurando problemas de produ\u00e7\u00e3o sejam o seu forte!<\/p>\n<p><em>S\u00e9rio<\/em> pessoal, isso deve ser considerado <strong>um pr\u00e9-lan\u00e7amento muito precoce<\/strong> e, entre agora e o GA final, s\u00e3o esperadas muitas mudan\u00e7as internas e externas. Dito isso, as interfaces p\u00fablicas provavelmente n\u00e3o mudar\u00e3o muito, com exce\u00e7\u00e3o de m\u00e9todos e funcionalidades adicionais que ser\u00e3o acrescentados.<\/p>\n<h2>Pr\u00e9-requisitos<\/h2>\n<p>S\u00e3o necess\u00e1rios alguns pr\u00e9-requisitos para come\u00e7ar a usar a DP1:<\/p>\n<ul>\n<li>Voc\u00ea tem uma inst\u00e2ncia local do Couchbase Server 2.5 ou superior instalada e em execu\u00e7\u00e3o. Caso contr\u00e1rio, fa\u00e7a isso agora: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.couchbase.com\/download<\/a><\/li>\n<li>Voc\u00ea tem o N1QL Developer Preview 3 instalado e em execu\u00e7\u00e3o. Caso contr\u00e1rio, obtenha-o tamb\u00e9m: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/communities\/n1ql\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.couchbase.com\/communities\/n1ql<\/a><\/li>\n<li>Visual Studio 2013 instalado. O VS2012 provavelmente tamb\u00e9m servir\u00e1, ou uma das vers\u00f5es Express: <a href=\"https:\/\/www.visualstudio.com\/en-us\/products\/visual-studio-express-vs.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.visualstudio.com\/en-us\/products\/visual-studio-express-vs.aspx<\/a>mas eu n\u00e3o os testei, ent\u00e3o voc\u00ea est\u00e1 por sua conta ;)<\/li>\n<li>Agora, fa\u00e7a o download dos bits em <a href=\"https:\/\/packages.couchbase.com.s3.amazonaws.com\/clients\/net\/2.0\/dp1\/couchbase-net-client-2-dp1.zip\">aqui<\/a>.<\/li>\n<\/ul>\n<p>Ok, tem tudo instalado? Legal, vamos escrever algum c\u00f3digo*!<\/p>\n<p>*Se quiser acompanhar como um tutorial, inicie o VS2013 e crie um aplicativo de console chamado Couchbase.NetDP1 e adicione refer\u00eancias aos bin\u00e1rios do \u00faltimo item acima. A solu\u00e7\u00e3o\/projeto final tamb\u00e9m est\u00e1 dispon\u00edvel <a href=\"https:\/\/packages.couchbase.com.s3.amazonaws.com\/clients\/net\/2.0\/dp1\/couchbase-net-client-2.0-dp1-example.zip\" target=\"_blank\" rel=\"noopener noreferrer\">aqui<\/a>.<\/p>\n<h2>Objeto de cluster<\/h2>\n<p>O objeto Cluster representa o lado do cliente de um cluster do Couchbase Server e fornece interfaces para interagir com os Buckets do Couchbase e as APIs de gerenciamento. Internamente, ele gerencia a conectividade entre o cliente e o servidor e garante que os recursos sejam alocados e desalocados corretamente.<\/p>\n<p>A classe Cluster \u00e9 um <a href=\"https:\/\/en.wikipedia.org\/wiki\/Design_Patterns\">GOF<\/a> Singleton com comportamento de carregamento lento; \u00e9 que uma \u00fanica inst\u00e2ncia deve ser usada em todos os threads de um processo. Essa \u00e9 uma grande mudan\u00e7a em rela\u00e7\u00e3o ao cliente 1.X anterior que, embora n\u00e3o fosse um singleton, por motivos de desempenho, precisava ser tratado como um singleton.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3556\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-1.png\" alt=\"dp1-cluster-1\" width=\"800\" height=\"254\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-1.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-1-300x95.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-1-768x244.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-1-20x6.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Para usar o objeto Cluster, primeiro voc\u00ea precisa inicializ\u00e1-lo. Por padr\u00e3o, a configura\u00e7\u00e3o \u00e9 definida para usar o localhost (127.0.0.1) e criar um pool de conex\u00f5es com um MaxSize de 2 e um MinSize de 1 conex\u00e3o TCP por objeto do Cluster. Voc\u00ea pode substituir esses padr\u00f5es criando seu pr\u00f3prio objeto ClientConfiguration e passando-o para o m\u00e9todo Cluster.Initialize(...) antes de chamar Cluster.Get().<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3558\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-2.png\" alt=\"dp1-cluster-2\" width=\"800\" height=\"368\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-2.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-2-300x138.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-2-768x353.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-2-20x9.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>A classe ClientConfiguration tamb\u00e9m permite substituir a configura\u00e7\u00e3o no n\u00edvel do Bucket, o que permite criar uma configura\u00e7\u00e3o separada para cada Bucket que voc\u00ea deseja usar.<\/p>\n<h2>O objeto CouchbaseBucket<\/h2>\n<p>Al\u00e9m do objeto Cluster, outra classe importante \u00e9 a classe CouchbaseBucket, que fornece uma API para consultar visualiza\u00e7\u00f5es, realizar consultas N1QL e fazer opera\u00e7\u00f5es CRUD gerais nas chaves. Ela tamb\u00e9m executa qualquer serializa\u00e7\u00e3o\/desserializa\u00e7\u00e3o necess\u00e1ria de Types e gerencia o hashing de chaves em todo o cluster para um conjunto de chaves. A classe CouchbaseBucket implementa a interface IBucket e tem um primo para trabalhar com Buckets Memcached na mem\u00f3ria: MemachedBucket. Ambas s\u00e3o compat\u00edveis com este DP.<\/p>\n<p>Para usar a classe CouchbaseBucket, voc\u00ea precisa de um objeto Cluster inicializado (veja acima) e tamb\u00e9m precisa que o Bucket j\u00e1 exista na inst\u00e2ncia ou no cluster do Couchbase Server. Aqui est\u00e1 um exemplo de abertura do Bucket \"padr\u00e3o\" que vem com cada instala\u00e7\u00e3o do Couchbase:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3559\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-3.png\" alt=\" dp1-cluster-3\" width=\"800\" height=\"281\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-3.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-3-300x105.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-3-768x270.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-3-20x7.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Depois de ter uma inst\u00e2ncia do Bucket, voc\u00ea pode come\u00e7ar a executar opera\u00e7\u00f5es CRUD em documentos e no Bucket. Observe que, no DP1, s\u00f3 h\u00e1 suporte para a inser\u00e7\u00e3o e a leitura de documentos. Aqui est\u00e1 um exemplo do novo m\u00e9todo Insert:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3560\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-4.png\" alt=\"dp1-cluster-4\" width=\"800\" height=\"513\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-4.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-4-300x192.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-4-768x492.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-4-20x13.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>E aqui est\u00e1 um exemplo de uso de Get(key) para recuperar os documentos inseridos no bucket padr\u00e3o usando o c\u00f3digo acima:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3561\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-5.png\" alt=\"dp1-cluster-5\" width=\"728\" height=\"377\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-5.png 728w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-5-300x155.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-5-20x10.png 20w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/p>\n<p>Quando terminar de usar um Bucket, basta liberar de volta para o objeto Cluster:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3562\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-8.png\" alt=\"dp1-cluster-8\" width=\"756\" height=\"78\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-8.png 756w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-8-300x31.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-8-20x2.png 20w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" \/><\/p>\n<p>O pr\u00f3prio objeto Cluster implementa IDisposable, portanto, quando o processo que o est\u00e1 usando termina, o m\u00e9todo Dispose deve ser chamado. Se ele n\u00e3o for chamado explicitamente, o GC invocar\u00e1 o finalizador em algum momento posterior, chamando implicitamente o Dispose e limpando os recursos internos.<\/p>\n<h2>O objeto IOperationResult<\/h2>\n<p>A maioria dos m\u00e9todos retorna um objeto IOperationResult que fornece informa\u00e7\u00f5es adicionais sobre os resultados da opera\u00e7\u00e3o. O mais not\u00e1vel \u00e9 que ele tem as seguintes propriedades:<\/p>\n<ul>\n<li><strong>Valor<\/strong> - o objeto ou valor que est\u00e1 sendo inserido ou retornado do Couchbase - este \u00e9 o Tipo T<\/li>\n<li><strong>Sucesso<\/strong> - um valor booleano que indica se a opera\u00e7\u00e3o foi bem-sucedida ou n\u00e3o<\/li>\n<li><strong>Mensagem<\/strong> - um valor de cadeia de caracteres com informa\u00e7\u00f5es adicionais sobre o motivo da falha da opera\u00e7\u00e3o (se tiver ocorrido); caso contr\u00e1rio, estar\u00e1 vazio.<\/li>\n<li><strong>Status da resposta<\/strong> - o valor retornado do servidor que indica o status da opera\u00e7\u00e3o.<\/li>\n<li><strong>Cas<\/strong> - um longo sem sinal que \u00e9 o valor \"Check and Set\" para a opera\u00e7\u00e3o. Isso \u00e9 usado como um meio de concorr\u00eancia otimista.<\/li>\n<\/ul>\n<p>Um padr\u00e3o bastante t\u00edpico \u00e9 verificar a propriedade Success e alterar o fluxo do programa de acordo com a detec\u00e7\u00e3o de um erro.<\/p>\n<h2>Suporte N1QL!<\/h2>\n<p>Essa visualiza\u00e7\u00e3o para desenvolvedores tamb\u00e9m oferece suporte b\u00e1sico para consultas N1QL ad-hoc! Se voc\u00ea n\u00e3o sabe o que \u00e9 N1QL, trata-se de uma linguagem semelhante ao SQL para consultar documentos nos Buckets do Couchbase. Aqui est\u00e1 um exemplo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3563\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-6.png\" alt=\"dp1-cluster-6\" width=\"724\" height=\"489\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-6.png 724w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-6-300x203.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-6-235x160.png 235w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-6-20x14.png 20w\" sizes=\"auto, (max-width: 724px) 100vw, 724px\" \/><\/p>\n<p>Observe que voc\u00ea deve ter o Developer Preview 3 do N1QL instalado e em execu\u00e7\u00e3o para que isso funcione! Voc\u00ea pode obt\u00ea-lo aqui: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/communities\/n1ql\/\">https:\/\/www.couchbase.com\/communities\/n1ql<\/a><\/p>\n<h2>Exibir suporte<\/h2>\n<p>A consulta de visualiza\u00e7\u00e3o tamb\u00e9m \u00e9 compat\u00edvel com a visualiza\u00e7\u00e3o do desenvolvedor 1. Supondo que voc\u00ea tenha o beer-sample instalado (voc\u00ea pode instal\u00e1-lo no Console de gerenciamento do Couchbase Server nas guias Configura\u00e7\u00f5es-&gt;Amostra), a consulta a seguir deve funcionar:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3564\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2014\/12\/dp1-cluster-7.png\" alt=\"dp1-cluster-7\" width=\"800\" height=\"434\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-7.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-7-300x163.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-7-768x417.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-7-20x11.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>O m\u00e9todo CreateQuery cria uma interface IViewQuery que permite a gera\u00e7\u00e3o de um URI REST do Couchbase View. Trata-se de um <a href=\"https:\/\/martinfowler.com\/bliki\/FluentInterface.html\">\"estilo fluente\" <\/a>para que voc\u00ea possa encadear uma s\u00e9rie de chamadas para criar a consulta certa para o seu caso de uso.<\/p>\n<h2>Pr\u00f3ximo<\/h2>\n<p>Esperamos ter pelo menos mais uma pr\u00e9via para desenvolvedores antes de lan\u00e7armos a vers\u00e3o beta e uma vers\u00e3o geral pode ser esperada para meados ou final do ver\u00e3o de 2014 (nenhuma data est\u00e1 definida, portanto, isso pode mudar!). Do ponto de vista do p\u00fablico, as interfaces p\u00fablicas discutidas aqui provavelmente mudar\u00e3o um pouco, principalmente para torn\u00e1-las mais consistentes e f\u00e1ceis de usar. Dito isso, elas ainda est\u00e3o prontas, aguardando o feedback da comunidade de desenvolvedores (estamos ouvindo voc\u00eas!).<\/p>\n<p>O que voc\u00ea provavelmente ver\u00e1 na pr\u00f3xima visualiza\u00e7\u00e3o para desenvolvedores \u00e9 o suporte para todas ou a maioria das opera\u00e7\u00f5es CRUD do Couchbase (Incrementar\/Decrementar, observar, etc.) e o suporte para <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/hh873175%28v=vs.110%29.aspx\">TAP (aguardar\/async)<\/a> Depois disso, voc\u00ea dar\u00e1 mais \u00eanfase ao desempenho e \u00e0 estabilidade interna. Mais adiante, voc\u00ea ver\u00e1 <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/bb397926.aspx\">LINQ<\/a> suporte para <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/communities\/n1ql\/\">N1QL<\/a> consultas e suporte a SSL<\/p>\n<h2>Precisamos de seu feedback!<\/h2>\n<p>Sim, voc\u00ea! V\u00e1 em frente e brinque com os bits e diga-nos o que achou. Se encontrar um bug ou tiver uma solicita\u00e7\u00e3o de recurso, voc\u00ea pode criar um t\u00edquete do Jira aqui:<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/issues\/browse\/NCBC\/\" target=\"_blank\" rel=\"noopener noreferrer\"> https:\/\/www.couchbase.com\/issues\/browse\/NCBC<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>At long last, we present the official Developer Preview 1 (DP1) for the Couchbase .NET 2.0 SDK! Previously, I posted about some of the motivation behind rewriting the Couchbase .NET SDK and also some of the goals and features you [&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-1563","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 1 - 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-1\/\" \/>\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 1\" \/>\n<meta property=\"og:description\" content=\"At long last, we present the official Developer Preview 1 (DP1) for the Couchbase .NET 2.0 SDK! Previously, I posted about some of the motivation behind rewriting the Couchbase .NET SDK and also some of the goals and features you [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:24:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:50:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"254\" \/>\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=\"7 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-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/\"},\"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 1\",\"datePublished\":\"2014-12-16T19:24:06+00:00\",\"dateModified\":\"2025-06-14T06:50:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/\"},\"wordCount\":1222,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#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-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/\",\"name\":\"Couchbase .NET SDK 2.0 Developer Preview 1 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:24:06+00:00\",\"dateModified\":\"2025-06-14T06:50:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#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-1\/#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 1\"}]},{\"@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 1 - 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-1\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase .NET SDK 2.0 Developer Preview 1","og_description":"At long last, we present the official Developer Preview 1 (DP1) for the Couchbase .NET 2.0 SDK! Previously, I posted about some of the motivation behind rewriting the Couchbase .NET SDK and also some of the goals and features you [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-developer-preview-1\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:24:06+00:00","article_modified_time":"2025-06-14T06:50:22+00:00","og_image":[{"width":800,"height":254,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2014\/12\/dp1-cluster-1.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":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/"},"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 1","datePublished":"2014-12-16T19:24:06+00:00","dateModified":"2025-06-14T06:50:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/"},"wordCount":1222,"commentCount":6,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#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-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/","name":"Couchbase .NET SDK 2.0 Developer Preview 1 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:24:06+00:00","dateModified":"2025-06-14T06:50:22+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-developer-preview-1\/#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-1\/#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 1"}]},{"@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\/1563","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=1563"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1563\/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=1563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1563"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}