{"id":6901,"date":"2019-05-08T12:19:06","date_gmt":"2019-05-08T19:19:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6901"},"modified":"2025-06-13T20:56:56","modified_gmt":"2025-06-14T03:56:56","slug":"introducing-the-couchbase-net-sdk-3-0-alpha-releases","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/","title":{"rendered":"Apresentando as vers\u00f5es \"Alpha\" do Couchbase .NET SDK 3.0"},"content":{"rendered":"<h2>O que h\u00e1 em um SDK?<\/h2>\n<p>O Couchbase Server oferece v\u00e1rios servi\u00e7os para armazenar, recuperar, consultar e analisar seus dados. Cada servi\u00e7o exp\u00f5e uma API p\u00fablica como API REST ou por meio do protocolo bin\u00e1rio Memcached estendido de n\u00edvel inferior. Com a autentica\u00e7\u00e3o adequada e as portas abertas, qualquer aplicativo pode usar essas APIs, mas elas t\u00eam um custo, uma complexidade e a falta de seguran\u00e7a de tipo na maioria das vezes. Sejamos francos, a maioria dos desenvolvedores de aplicativos n\u00e3o est\u00e1 preocupada em analisar uma resposta REST ou desempacotar pacotes do Memcached; eles querem criar suas solu\u00e7\u00f5es de forma r\u00e1pida e eficiente para resolver suas necessidades comerciais exclusivas. Eles querem uma biblioteca que lide com gerenciamento de recursos, fragmenta\u00e7\u00e3o, gerenciamento de altera\u00e7\u00f5es na topologia do cluster etc., que \u00e9 a fun\u00e7\u00e3o do SDK do Couchbase.<\/p>\n<h3>Por que estamos mudando?<\/h3>\n<p>O SDK 1.0 estava alinhado com o Couchbase Server 1.x e suportava principalmente a leitura\/grava\u00e7\u00e3o de pares de chave\/valor em um formato bin\u00e1rio e JSON usando o protocolo Memcached e as visualiza\u00e7\u00f5es. Os SDKs foram desenvolvidos independentemente uns dos outros e n\u00e3o tinham uma interface de API consistente. Em alguns casos, as diferen\u00e7as de empacotamento do Memcached tornavam os dados n\u00e3o compartilh\u00e1veis entre os SDKs.<\/p>\n<p>O SDK 2.0 oferecia suporte a novos recursos do Couchbase Server \u00e0 medida que ele evolu\u00eda: N1QL, a linguagem semelhante ao SQL para consultar documentos JSON armazenados no Couchbase Server, autentica\u00e7\u00e3o aprimorada usando RBAC (Role Based Access Control, controle de acesso baseado em fun\u00e7\u00e3o), suporte aprimorado a JSON, an\u00e1lise, FTS (Full Text Search, pesquisa de texto completo) e outras ferramentas para interagir com seus dados. Na vers\u00e3o 2.X, alinhamos as interfaces e as tornamos consistentes, em sua maior parte, em todos os SDKs usando uma RFC para garantir a ades\u00e3o \u00e0s interfaces definidas e inclu\u00edmos um componente Common Flags para garantir que os dados pudessem ser gravados e lidos em qualquer SDK. No lado negativo, a interface do IBucket ficou inchada e dif\u00edcil de usar, pois v\u00e1rias APIs foram amontoadas nela.<\/p>\n<p>O SDK 3.0 est\u00e1 alinhado com os novos recursos do Couchbase Server que se estendem da interface tradicional do Bucket: suporte para Escopos e Cole\u00e7\u00f5es que estar\u00e3o dispon\u00edveis como um <strong>Visualiza\u00e7\u00e3o para desenvolvedores no Couchbase Server 6.5<\/strong> e como <strong>GA no Couchbase Server 7.0<\/strong>. Al\u00e9m disso, ele consolida e refina as interfaces formalmente inchadas e baseadas em sobrecarga em uma interface menor e mais concisa, mantendo e melhorando a conformidade entre os SDKs.<\/p>\n<h3>Como fazemos a vers\u00e3o?<\/h3>\n<p>Todos os SDKs assinam o <a href=\"https:\/\/semver.org\/\">Controle de vers\u00e3o sem\u00e2ntico 2.0.0<\/a> Especifica\u00e7\u00e3o (SemVer) em que, para um determinado n\u00famero de vers\u00e3o <em>MAIOR.MENOR.PATCH<\/em> \u00e9 incrementado quando:<\/p>\n<ul>\n<li><strong>MAIOR<\/strong> quando voc\u00ea faz altera\u00e7\u00f5es incompat\u00edveis na API,<\/li>\n<li><strong>MENOR<\/strong> quando voc\u00ea adiciona funcionalidades de forma compat\u00edvel com as vers\u00f5es anteriores, e<\/li>\n<li><strong>PATCH<\/strong> quando voc\u00ea faz corre\u00e7\u00f5es de bugs compat\u00edveis com as vers\u00f5es anteriores.<\/li>\n<\/ul>\n<p>Al\u00e9m disso, para pr\u00e9-lan\u00e7amentos e metadados de compila\u00e7\u00e3o, adicionamos extens\u00f5es \u00e0 especifica\u00e7\u00e3o SemVer, conforme permitido por ela. Por exemplo, nossas primeiras vers\u00f5es do SDK 3.0 usam a designa\u00e7\u00e3o \"alfa\" mais um incremento para a vers\u00e3o alfa. Por exemplo, nossas primeiras visualiza\u00e7\u00f5es do SDK 3.0 usaram a seguinte vers\u00e3o compat\u00edvel com o SemVer: \"3.0.0-alpha1\". O pr\u00f3ximo pr\u00e9-lan\u00e7amento, ap\u00f3s as vers\u00f5es alfa, ser\u00e1 \"3.0.0-beta1\" e, finalmente, uma vers\u00e3o GA totalmente compat\u00edvel ser\u00e1 \"3.0.0\". Em geral, espere mudan\u00e7as significativas entre as vers\u00f5es \"alfa\", que n\u00e3o devem ocorrer (mas, em alguns casos, podem ser necess\u00e1rias) quando a vers\u00e3o \"beta\" for lan\u00e7ada.<\/p>\n<p>Observe que h\u00e1 uma pequena discrep\u00e2ncia entre as vers\u00f5es do servidor, pois o Couchbase Server oferecer\u00e1 pr\u00e9-lan\u00e7amentos como \"developer previews\" ou \"dp\" e, em seguida, \"beta\" e, finalmente, GA.<\/p>\n<h3>Escopos e cole\u00e7\u00f5es no Couchbase Server 6.5+<\/h3>\n<p>Nas vers\u00f5es do Couchbase Servers anteriores \u00e0 6.5, os Buckets eram usados como uma entidade l\u00f3gica, nomeada pelo usu\u00e1rio, que agrupava itens, permitindo que fossem acessados, indexados, replicados e controlados por acesso.<\/p>\n<p>Esse era realmente o \u00fanico meio de obter multitenancy usando o Couchbase Server e vinha com algumas limita\u00e7\u00f5es: Os pr\u00f3prios buckets s\u00e3o bastante intensivos em recursos e um cluster s\u00f3 pode gerenciar com efici\u00eancia um n\u00famero finito de buckets. Para arquiteturas de microsservi\u00e7o modernas ou qualquer arquitetura em que o multilocat\u00e1rio fosse necess\u00e1rio, isso criava alguns desafios ao atender a uma grande quantidade de locat\u00e1rios. Isso \u00e9 resolvido no Couchbase Server 6.5+ por Escopos e Cole\u00e7\u00f5es.<\/p>\n<p>Um escopo no Couchbase 6.5+ representa uma unidade de multiloca\u00e7\u00e3o e permite que os nomes de cole\u00e7\u00f5es sejam reutilizados; qualquer escopo pode conter exatamente um nome de cole\u00e7\u00e3o exclusivo. Um escopo \u00e9 simplesmente um grupo de cole\u00e7\u00f5es. Cada Bucket cont\u00e9m um Escopo padr\u00e3o com o nome <em>\"_default\"<\/em> e um identificador de escopo 0 (zero) que cont\u00e9m uma cole\u00e7\u00e3o padr\u00e3o chamada <em>\"_default<\/em>\" e seu respectivo identificador de 0 (zero). Obviamente, para cada escopo espec\u00edfico, podem ser criadas v\u00e1rias cole\u00e7\u00f5es.<\/p>\n<p>Isso tem o efeito de mover as opera\u00e7\u00f5es de chave\/valor que estavam no contexto do Bucket para SDK1.0 e SDK2.0 para o contexto da Cole\u00e7\u00e3o para SDK3.0. Ao mesmo tempo, as opera\u00e7\u00f5es entre buckets, como FTS, Analytics e N1QL, agora s\u00e3o feitas no n\u00edvel do cluster.<\/p>\n<h2>S\u00e9rie alfa do .NET SDK 3.0<\/h2>\n<p>O primeiro pacote de despejo do Couchbase .NET SDK 3.0 foi o Couchbase<a href=\"https:\/\/www.nuget.org\/packages\/CouchbaseNetClient\/3.0.0-alpha2\"> Alfa 2<\/a> (O Alpha 1 continha um bug que tornou necess\u00e1rio o lan\u00e7amento e o aumento da vers\u00e3o). <a href=\"https:\/\/www.nuget.org\/packages\/CouchbaseNetClient\/3.0.0-alpha3\">Alfa 3<\/a> foi lan\u00e7ado em 26 de abril - planejamos lan\u00e7ar v\u00e1rios outros! O foco em um pr\u00e9-lan\u00e7amento \u00e9 fornecer os bits para programar opera\u00e7\u00f5es de chave\/valor e consultas N1QL no Couchbase Server. Ele cont\u00e9m as conhecidas estruturas l\u00f3gicas Cluster e Bucket, bem como as novas estruturas Scope e Collections. Observe que, embora os escopos e as cole\u00e7\u00f5es fa\u00e7am parte do Couchbase 6.5, que n\u00e3o ser\u00e1 lan\u00e7ado at\u00e9 o final deste ano ou no ano que vem, o SDK 3.0 tamb\u00e9m oferece suporte ao Couchbase 5.0 e superior usando o escopo e a cole\u00e7\u00e3o padr\u00e3o explicados anteriormente.<\/p>\n<h3>Cluster e buckets no SDK 3.0<\/h3>\n<p>Assim como no SDK 2.0, os objetos Cluster e Bucket est\u00e3o de volta no SDK 3.0, cada um representando suas equival\u00eancias de servidor. A conex\u00e3o a um cluster e a abertura de um bucket s\u00e3o feitas de maneira semelhante \u00e0 do SDK2.0:<\/p>\n<pre class=\"lang:c# decode:true\">\/Configurar e abrir um objeto de cluster\r\nvar cluster = new Cluster(new Configuration().\r\n    WithServers(\"couchbase:\/\/localhost\").\r\n    WithBucket(\"default\").\r\n    WithCredentials(\"Administrator\", \"password\"));\r\n\r\n\/\/abrir um bucket chamado \"default\"\r\nvar bucket = await Cluster.Bucket(\"default\");<\/pre>\n<p>Semelhante ao SDK2.0, os objetos Cluster e Bucket s\u00e3o objetos de longa dura\u00e7\u00e3o, cuja vida \u00fatil geralmente vai da inicializa\u00e7\u00e3o do aplicativo at\u00e9 o seu encerramento.<\/p>\n<h3>Usando o escopo e as cole\u00e7\u00f5es padr\u00e3o no Couchbase Server 6.0<\/h3>\n<p>Todas as opera\u00e7\u00f5es de chave\/valor agora existem no n\u00edvel das cole\u00e7\u00f5es, que sempre ser\u00e3o membros de exatamente um escopo. Aqui est\u00e3o alguns exemplos de acesso a uma cole\u00e7\u00e3o e, em seguida, de leitura e grava\u00e7\u00e3o de dados na cole\u00e7\u00e3o.<\/p>\n<pre class=\"lang:c# decode:true\">\/\/abrir a cole\u00e7\u00e3o\/escopo padr\u00e3o\r\nvar collection = await bucket.GetDefaultCollection();\r\n\r\n\/\/adicionar um novo documento\r\nawait collection.Insert(key, new {name = \"mike\"});\r\n\r\n\/\/recuperar o documento\r\nusing (var result = await collection.Get(key)) {\r\n    var content = result.ContentAs();\r\n    Console.WriteLine(content.name);\r\n}<\/pre>\n<p>Observe que estamos usando o Couchbase Server 6.0 e, portanto, n\u00e3o temos suporte para Scope ou Collection (eles n\u00e3o estar\u00e3o dispon\u00edveis at\u00e9 o Server 6.5); no entanto, podemos usar o Scope e a Collection \"padr\u00e3o\" como se tiv\u00e9ssemos suporte para Scope e Collections. Observe que isso foi adicionado como um recurso de atualiza\u00e7\u00e3o para migrar para a vers\u00e3o mais recente do servidor. O escopo e a cole\u00e7\u00e3o \"padr\u00e3o\" sempre estar\u00e3o dispon\u00edveis; \u00e9 semelhante ao funcionamento de um bucket nos SDKs anteriores \u00e0 vers\u00e3o 3.0.<\/p>\n<p>Observe que, ap\u00f3s buscar um documento, o GetResult deve ser descartado para liberar recursos, caso contr\u00e1rio, os buffers internos ser\u00e3o \"vazados\"; essa \u00e9 uma altera\u00e7\u00e3o do SDK 1.0 e 2.0.<\/p>\n<h3>Uso do escopo nomeado e das cole\u00e7\u00f5es no Couchbase Server 6.5+<\/h3>\n<p>Esse \u00e9 o futuro do Couchbase: a capacidade de dividir um Bucket em v\u00e1rios escopos l\u00f3gicos (multiloca\u00e7\u00e3o) e cole\u00e7\u00f5es de documentos distintos. Isso substitui a exig\u00eancia das primeiras vers\u00f5es do servidor Couchbase de adicionar um campo especial de \"tipo\" que designava uma esp\u00e9cie de agrupamento de documentos por nome, que poderia ser consultado independentemente em um Bucket. Acredito que voc\u00ea descobrir\u00e1 que esse \u00e9 um modelo de programa\u00e7\u00e3o muito mais intuitivo e que permitir\u00e1 avan\u00e7os futuros dos recursos do servidor no futuro.<\/p>\n<pre class=\"lang:c# decode:true\">\/Abrir um escopo e, em seguida, uma cole\u00e7\u00e3o\r\nvar scope = await bucket.Scope(\"ACME\");\r\nvar collection = await scope.Collection(\"tools\");\r\n\r\n\/\/adicionar um novo documentawait\r\ncollection.Insert(key, new Tool(Name = \"Hammer\", Type=\"Ball peen\"});\r\n\r\n\/\/recuperar o documento\r\nusing (var result = await collection.Get(key)) {\r\n        var content = result.ContentAs();\r\n        Console.WriteLine(content.Name);\r\n}<\/pre>\n<h3>Uso do cluster para consultas N1QL<\/h3>\n<p>O N1QL, assim como o Analytics e o FTS, \u00e9 considerado de escopo \"global\", pois uma consulta pode fazer refer\u00eancia a v\u00e1rios Buckets. Inicialmente, no SDK 2.0, as consultas N1QL tinham escopo para o Bucket e, posteriormente, foram adicionadas ao Cluster. No SDK 3.0, atualmente, voc\u00ea s\u00f3 pode consultar a partir do objeto Cluster.<\/p>\n<pre class=\"lang:c# decode:true\">\/\/executar uma consulta no cluster\r\nvar statement = \"SELECT * FROM `default` WHERE type=$name;\";\r\nvar result = await cluster.Query(statement,\r\n     parameters =&gt;{parameters.Add(\"name\", \"person\");});\r\n\r\n\/\/enumerar as linhas retornadas\r\nforeach(var row in result){\r\n    Console.WriteLine(row.name);\r\n}\r\n\r\n\/\/liberar os buffers internos\r\nresult.Dispose();<\/pre>\n<p>De modo geral, todos os servi\u00e7os (Query, FTS e Analytics) t\u00eam uma API p\u00fablica muito semelhante \u00e0 do SDK 2.0; no entanto, para fins de consist\u00eancia, o campo obrigat\u00f3rio (a instru\u00e7\u00e3o SQL para N1QL) foi adicionado como um par\u00e2metro no lado esquerdo e os par\u00e2metros opcionais agora est\u00e3o consolidados em um bloco ou estrutura de \"op\u00e7\u00f5es\" no lado direito. Voc\u00ea perceber\u00e1 que isso continua em todo o SDK e melhora muito a consist\u00eancia da API.<\/p>\n<h3>Obtendo as vers\u00f5es alfa do SDK do Couchbase .NET 3.0<\/h3>\n<p>Assim como em todas as vers\u00f5es do SDK do Couchbase .NET, oferecemos a op\u00e7\u00e3o de <a href=\"https:\/\/s3.amazonaws.com\/packages.couchbase.com\/clients\/net\/2.5\/Couchbase-Net-Client-2.7.7.zip\">downloads<\/a> do pacote NuGet e tamb\u00e9m ser\u00e1 publicado no <a href=\"https:\/\/www.nuget.org\/packages\/CouchbaseNetClient\/3.0.0-alpha3\">NuGet<\/a>.<\/p>\n<p>Por fim, um agradecimento especial a Brant Burnett, da Centeredge Software, por contribuir enormemente para o lan\u00e7amento!<\/p>","protected":false},"excerpt":{"rendered":"<p>What\u2019s in an SDK? Couchbase Server offers multiple services for storing, retrieving, querying and analyzing your data. Each service exposes a public API either as REST API or via lower level, extended, Memcached binary protocol. With the proper Authentication and [&hellip;]<\/p>","protected":false},"author":21,"featured_media":7110,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10127,2201],"tags":[2364,1261],"ppma_author":[8970],"class_list":["post-6901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-c-sharp","category-tools-sdks","tag-collections","tag-json"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases - 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\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases\" \/>\n<meta property=\"og:description\" content=\"What\u2019s in an SDK? Couchbase Server offers multiple services for storing, retrieving, querying and analyzing your data. Each service exposes a public API either as REST API or via lower level, extended, Memcached binary protocol. With the proper Authentication and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-08T19:19:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:56:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1584\" \/>\n\t<meta property=\"og:image:height\" content=\"396\" \/>\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=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases\",\"datePublished\":\"2019-05-08T19:19:06+00:00\",\"dateModified\":\"2025-06-14T03:56:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/\"},\"wordCount\":1340,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png\",\"keywords\":[\"collections\",\"JSON\"],\"articleSection\":[\".NET\",\"C#\",\"Tools &amp; SDKs\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/\",\"name\":\"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png\",\"datePublished\":\"2019-05-08T19:19:06+00:00\",\"dateModified\":\"2025-06-14T03:56:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png\",\"width\":1584,\"height\":396},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases\"}]},{\"@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":"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases - 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\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/","og_locale":"pt_BR","og_type":"article","og_title":"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases","og_description":"What\u2019s in an SDK? Couchbase Server offers multiple services for storing, retrieving, querying and analyzing your data. Each service exposes a public API either as REST API or via lower level, extended, Memcached binary protocol. With the proper Authentication and [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-05-08T19:19:06+00:00","article_modified_time":"2025-06-14T03:56:56+00:00","og_image":[{"width":1584,"height":396,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.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":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases","datePublished":"2019-05-08T19:19:06+00:00","dateModified":"2025-06-14T03:56:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/"},"wordCount":1340,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png","keywords":["collections","JSON"],"articleSection":[".NET","C#","Tools &amp; SDKs"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/","url":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/","name":"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png","datePublished":"2019-05-08T19:19:06+00:00","dateModified":"2025-06-14T03:56:56+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/big-plain-logo.png","width":1584,"height":396},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-net-sdk-3-0-alpha-releases\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing the Couchbase .NET SDK 3.0 \u201cAlpha\u201d Releases"}]},{"@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","author_category":"","last_name":"Jeff Morris, Senior Software Engineer, Couchbase","first_name":"Jeff","job_title":"","user_url":"","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\/6901","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=6901"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/6901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/7110"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=6901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=6901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=6901"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=6901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}