{"id":1653,"date":"2014-12-16T19:35:14","date_gmt":"2014-12-16T19:35:13","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1653"},"modified":"2025-06-13T23:50:09","modified_gmt":"2025-06-14T06:50:09","slug":"introducing-couchbase-net-sdk-20-development-blog-series","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-net-sdk-20-development-blog-series\/","title":{"rendered":"Presentaci\u00f3n de la serie de blogs de desarrollo de Couchbase DOTNET SDK 2.0"},"content":{"rendered":"<p>Hola amigos, durante los pr\u00f3ximos meses haremos una serie de blogs que seguir\u00e1n el desarrollo del SDK .NET 2.0 de Couchbase. En este post repasar\u00e9 la arquitectura de alto nivel, algunas motivaciones y caracter\u00edsticas que deber\u00edas esperar, y cu\u00e1les son los objetivos generales del SDK .NET con respecto a los otros clientes de Couchbase: Node, PHP, Java, y C. Discutir los objetivos del SDK .NET dentro del \u00e1mbito de toda la suite de clientes Couchbase es un paso importante en la unificaci\u00f3n de las API's, para que los desarrolladores tengan una experiencia de programaci\u00f3n consistente sin importar el SDK que elijan.<\/p>\n<h1>Historia y motivaci\u00f3n<\/h1>\n<p>En primer lugar, vamos a hablar de cu\u00e1l es nuestra motivaci\u00f3n para reescribir el SDK .NET de Couchbase. Tenga en cuenta que en su mayor parte, se trata de una reescritura completa desde cero ... casi todos los componentes est\u00e1n siendo redise\u00f1ados y desarrollados para satisfacer mejor las necesidades de nuestros clientes y la comunidad de usuarios en general. A estas alturas, la mayor\u00eda de nosotros ya hemos sido advertidos de que el <em><a href=\"https:\/\/www.joelonsoftware.com\/articles\/fog0000000069.html\">El peor error estrat\u00e9gico que puede cometer una empresa de software es reescribir desde cero un c\u00f3digo funcional que funcione.<\/a><\/em><strong>, <\/strong>pero aqu\u00ed en Couchbase creemos que es la mejor decisi\u00f3n dada la historia y el estado del SDK .NET 1.X y la direcci\u00f3n que queremos seguir con el cliente.<\/p>\n<p>Conviene hacer un poco de historia. El cliente actual est\u00e1 basado en el cliente .NET original de Memcached: <a href=\"https:\/\/github.com\/enyim\/EnyimMemcached\">Enyim.Caching<\/a>. Fue escrita hace varios a\u00f1os y originalmente soportaba el protocolo Memcached Text y eventualmente tambi\u00e9n el Memcached Binary Protocol. En s\u00ed misma, fue dise\u00f1ada para ser una API independiente, no un framework para crear otras APIs. Dicho esto, el actual cliente .NET Couchbase se construy\u00f3 sobre una bifurcaci\u00f3n del c\u00f3digo fuente de Enyim.Caching; lo bifurcamos porque el autor original, aunque era un gran colaborador, ya no ten\u00eda el tiempo necesario para mantener el proyecto en marcha. El cliente Couchbase a\u00f1adi\u00f3 soporte de vistas y otras caracter\u00edsticas espec\u00edficas de Couchbase Server adem\u00e1s de las cosas K\/V ya soportadas por Enyim.Caching.<\/p>\n<p>Dado que el cliente se bas\u00f3 originalmente en un protocolo basado en K\/V, la adaptaci\u00f3n de algunas de las caracter\u00edsticas de Couchbase ha hecho que la API sea un poco espinosa. Adem\u00e1s, a medida que se han ido a\u00f1adiendo capas, la complejidad tambi\u00e9n ha aumentado, lo que ha dificultado cada vez m\u00e1s el soporte y mantenimiento del cliente. Adem\u00e1s, dado que el cliente se basa realmente en .NET 3.5 (aunque construimos para 4.0, 3.5 es la LCD), no est\u00e1bamos progresando con el estado actual de las caracter\u00edsticas de .NET, como las nuevas y potentes bibliotecas y caracter\u00edsticas as\u00edncronas basadas en tareas (async\/await) y las mejoras en las API de red. Mantener la compatibilidad con versiones anteriores y hacer progresar el cliente es, por tanto, imposible; tenemos que tomar una direcci\u00f3n completamente nueva.<\/p>\n<h1>Objetivos y caracter\u00edsticas<\/h1>\n<p>Las metas\/objetivos del SDK .NET 2.0 de Couchbase son bastante simples:<\/p>\n<ul>\n<li>Unificaci\u00f3n y coherencia de la interfaz de programaci\u00f3n en todas las plataformas del SDK de Couchbase (Java, .NET, PHP, Node, C, etc.)<\/li>\n<li>Un dise\u00f1o flexible y basado en pruebas: su n\u00facleo es la extensibilidad<\/li>\n<li>Altamente configurable, pero f\u00e1cil de poner en marcha con la configuraci\u00f3n predeterminada.<\/li>\n<li>E\/S as\u00edncrona: un modelo no bloqueante para la programaci\u00f3n en red<\/li>\n<li>Una interfaz de programaci\u00f3n sencilla y f\u00e1cil de usar<\/li>\n<li>Uso minimalista de conexiones cliente\/servidor<\/li>\n<li>Documentaci\u00f3n mejorada<\/li>\n<\/ul>\n<p>Algunas caracter\u00edsticas probables son:<\/p>\n<ul>\n<li>Compatibilidad con la publicaci\u00f3n de configuraci\u00f3n de portadores de cl\u00fasteres (<a href=\"https:\/\/www.couchbase.com\/blog\/es\/wiki\/display\/couchbase\/Cluster+Configuration+Carrier+Publication\/\">CCCP<\/a>) - una nueva forma de actualizar la configuraci\u00f3n de los clientes basada en el estado actual de los clusters a trav\u00e9s de un mecanismo pull.<\/li>\n<li>Patr\u00f3n as\u00edncrono basado en tareas (<a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/hh873175%28v=vs.110%29.aspx\">TAP<\/a>) apoyo a las operaciones K\/V y View<\/li>\n<li>Primera clase <a href=\"https:\/\/www.couchbase.com\/blog\/es\/communities\/n1ql\/\">N1QL<\/a> N1QL es el nuevo lenguaje de consulta SQL de Couchbase.<\/li>\n<li>A <a href=\"https:\/\/en.wikipedia.org\/wiki\/Language_Integrated_Query\">LINQ<\/a> implementaci\u00f3n del proveedor sobre la API b\u00e1sica<\/li>\n<li>Puntos de integraci\u00f3n con otras tecnolog\u00edas .NET como ASP.NET y Frameworks para desarrollar r\u00e1pidamente aplicaciones basadas en datos.<\/li>\n<\/ul>\n<h1>Arquitectura de alto nivel<\/h1>\n<p>Durante los \u00faltimos dos a\u00f1os, el equipo de SDK de Couchbase ha desarrollado varios clientes de Couchbase Server en diferentes plataformas y frameworks: .NET, Java, Node.js, etc. Como cada uno de estos clientes se han desarrollado y evolucionado con los cambios en el servidor, han surgido varios patrones para el desarrollo de un cliente consciente de cl\u00faster, o m\u00e1s espec\u00edficamente en el caso de Couchbase, un cliente \"inteligente\". Con el objetivo de \"unificar la interfaz de programaci\u00f3n\", implementamos estos patrones dentro de cada cliente. Discutiremos esos patrones en detalle en posts posteriores.<\/p>\n<p align=\"center\"><strong>Componentes de cliente Couchbase<\/strong><\/p>\n<p>Estos componentes forman un cliente Couchbase:<\/p>\n<ul>\n<li>IO - Gesti\u00f3n de recursos y acceso general a la programaci\u00f3n de red<\/li>\n<li>Configuraci\u00f3n - Configuraci\u00f3n del cliente y del servidor<\/li>\n<li>Operaciones - Operaciones de clave\/valor y vista en documentos JSON: Get, Set, etc.<\/li>\n<li>Mapa del cl\u00faster: gestiona los nodos activos y d\u00f3nde se almacenan las claves en el cl\u00faster.<\/li>\n<li>Registro e instrumentaci\u00f3n: registro general, seguimiento y supervisi\u00f3n de la actividad de los clientes.<\/li>\n<\/ul>\n<h1>Siguiente<\/h1>\n<p>Bueno, eso es todo por ahora. A continuaci\u00f3n repasaremos el dise\u00f1o y desarrollo de una parte del componente Configuraci\u00f3n: Configuraci\u00f3n del Servidor. La Configuraci\u00f3n del Servidor maneja el estado del cliente que es paralelo al estado del cluster. Un cambio en el cluster generalmente, significa un cambio en el estado del cliente tambi\u00e9n, lo que trae consigo varias complejidades y problemas que deben ser abordados para mantener las cosas estables.<\/p>","protected":false},"excerpt":{"rendered":"<p>Hello folks, over the next couple of months we\u2019ll be doing a series of blogs that will follow the development of the Couchbase .NET 2.0 SDK. In this post I will go over the high level architecture, some motivation and [&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":[1311,1349],"ppma_author":[8970],"class_list":["post-1653","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","tag-architecture","tag-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introduction to the Couchbase .NET SDK 2.0 Development<\/title>\n<meta name=\"description\" content=\"Learn high level architecture and features, overall goals of the .NET SDK with respect to the other Couchbase clients: Node, PHP, Java, and C.\" \/>\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\/es\/introducing-couchbase-net-sdk-20-development-blog-series\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing the Couchbase DOTNET SDK 2.0 Development Blog Series\" \/>\n<meta property=\"og:description\" content=\"Learn high level architecture and features, overall goals of the .NET SDK with respect to the other Couchbase clients: Node, PHP, Java, and C.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-net-sdk-20-development-blog-series\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:35:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:50:09+00:00\" \/>\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=\"4 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-couchbase-net-sdk-20-development-blog-series\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Introducing the Couchbase DOTNET SDK 2.0 Development Blog Series\",\"datePublished\":\"2014-12-16T19:35:13+00:00\",\"dateModified\":\"2025-06-14T06:50:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/\"},\"wordCount\":847,\"commentCount\":9,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Architecture\",\"Development\"],\"articleSection\":[\".NET\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/\",\"name\":\"Introduction to the Couchbase .NET SDK 2.0 Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:35:13+00:00\",\"dateModified\":\"2025-06-14T06:50:09+00:00\",\"description\":\"Learn high level architecture and features, overall goals of the .NET SDK with respect to the other Couchbase clients: Node, PHP, Java, and C.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#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\/introducing-couchbase-net-sdk-20-development-blog-series\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing the Couchbase DOTNET SDK 2.0 Development Blog Series\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@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\/es\/author\/jeff-morris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introduction to the Couchbase .NET SDK 2.0 Development","description":"Aprende la arquitectura y caracter\u00edsticas de alto nivel, objetivos generales del SDK .NET con respecto a los otros clientes de Couchbase: Node, PHP, Java y C.","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\/es\/introducing-couchbase-net-sdk-20-development-blog-series\/","og_locale":"es_MX","og_type":"article","og_title":"Introducing the Couchbase DOTNET SDK 2.0 Development Blog Series","og_description":"Learn high level architecture and features, overall goals of the .NET SDK with respect to the other Couchbase clients: Node, PHP, Java, and C.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-net-sdk-20-development-blog-series\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:35:13+00:00","article_modified_time":"2025-06-14T06:50:09+00:00","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":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Introducing the Couchbase DOTNET SDK 2.0 Development Blog Series","datePublished":"2014-12-16T19:35:13+00:00","dateModified":"2025-06-14T06:50:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/"},"wordCount":847,"commentCount":9,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Architecture","Development"],"articleSection":[".NET"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/","url":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/","name":"Introduction to the Couchbase .NET SDK 2.0 Development","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:35:13+00:00","dateModified":"2025-06-14T06:50:09+00:00","description":"Aprende la arquitectura y caracter\u00edsticas de alto nivel, objetivos generales del SDK .NET con respecto a los otros clientes de Couchbase: Node, PHP, Java y C.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-net-sdk-20-development-blog-series\/#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\/introducing-couchbase-net-sdk-20-development-blog-series\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing the Couchbase DOTNET SDK 2.0 Development Blog Series"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos 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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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, Ingeniero Superior de Software, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@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 es Ingeniero de Software Senior en Couchbase. Antes de unirse a Couchbase, Jeff pas\u00f3 seis a\u00f1os en Source Interlink como Arquitecto Web Empresarial. Jeff es responsable del desarrollo de los SDK de Couchbase y de c\u00f3mo integrarse con N1QL (lenguaje de consulta).","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/es\/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 es Ingeniero de Software Senior en Couchbase. Antes de unirse a Couchbase, Jeff pas\u00f3 seis a\u00f1os en Source Interlink como Arquitecto Web Empresarial. Jeff es responsable del desarrollo de los SDK de Couchbase y de c\u00f3mo integrarse con N1QL (lenguaje de consulta)."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1653"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1653\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1653"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}