Ya está disponible el SDK .NET 2.3.3 de Couchbase.
Hoy lanzamos una versión de mantenimiento y corrección de errores del SDK .NET de Couchbase. Esta es la continuación de las versiones 2.3.0 y 2.3.1 (no hay versión 2.3.2) y le sugerimos que actualice en consecuencia. Aunque en gran medida se trata de una versión de corrección de errores, hay un par de nuevas características menores que estamos lanzando, así como un cambio de nombre de la API que hace que los métodos más antiguos sean obsoletos.
Novedades y cambios
Métodos asíncronos por lotes
Hemos añadido una nueva API de métodos asíncronos para ejecutar por lotes una serie de operaciones sobre documentos JSON. Estos métodos permiten utilizar el conocido paradigma async/await para ejecutar una lista de operaciones de forma no bloqueante:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
var documentos = nuevo Lista<IDocumento<objeto>> { nuevo Documento<objeto> { Id = "UpsertAsync_Batch_doc1", Contenido = nuevo {Nombre = "bob", Especie = "Gato", Edad = 5} }, nuevo Documento<objeto> {Id = "UpsertAsync_Batch_doc2", Contenido = 10}, nuevo Documento<objeto> {Id = "UpsertAsync_Batch_doc3", Contenido = nuevo Gato {Nombre = "Cleo", Edad = 10}} }; var resultados = await _bucket.UpsertAsync(documentos).ConfigureAwait(falso); |
Observe que en este ejemplo especificamos que el tipo genérico T es un objeto. De este modo, podemos combinar documentos de distintos tipos; si restringiéramos T a un tipo más específico, todos los documentos del lote tendrían que ser del mismo tipo.
Estos métodos se han añadido para las siguientes operaciones:
- GetDocumentsAsync: obtener un conjunto de documentos dado un conjunto de claves
- UpsertAsync: actualiza un conjunto existente de documentos o los inserta si no existen.
- InsertAsync: inserta un conjunto de documentos que fallan si existen
- RemoveASync: eliminar un conjunto de documentos
- ReplaceAsync: reemplaza un conjunto de documentos, fallando si no existen.
Permitir la configuración programática de los servicios IO
Hace algún tiempo, lanzamos un nuevo proveedor IO llamado MUX IOSin embargo, sólo soportábamos la configuración a través de archivos App.config o Web.config. Ahora puede programar su servicio IO:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
var config = nuevo ClientConfiguration { Servidores = nuevo Lista<Uri> { nuevo Uri(ConfigurationManager.AppSettings["bootstrapUrl"]) } }; config.ConnectionPoolCreator = ConnectionPoolFactory.GetFactory<ConnectionPool<MultiplexaciónConexión>>(); config.IOServiceCreator = IOServiceFactory.GetFactory<MultiplexaciónIOServicio>(); ClusterHelper.Inicializar(config); |
Muchas gracias a los miembros de la comunidad Petr Drastil ¡por enviar un PR para esta función!
Actualizar el paquete NewtonSoft a 8.0.3
Por fin hemos actualizado de la versión 6.0.8 a la 8.0.3, en gran parte para dar soporte a un serializador JSON compatible con .NET Core.
Cambiar el nombre de GetWithLock por GetAndLock
Esto se hizo para que pudiéramos tener cierta consistencia entre los distintos SDKs de Couchbase (Java, PHP, etc). Todos los métodos GetWithLock han sido marcados como "obsoletos" usando el ObsoleteAttribute .aspx). Si utiliza estos métodos, recibirá una advertencia del compilador. Tenga en cuenta que estos métodos no se eliminarán hasta que se publique una versión mayor (3.x por ejemplo) del SDK.
Soporte IPv6
Ahora puedes establecer una configuración global para que el cliente utilice sólo entradas IPv6 cuando resuelva un Nombre de Dominio Completamente Cualificado (FQDN). Yo diría que se trata de una función "experimental", en el sentido de que no se ha probado exhaustivamente, por lo que ¡ caveat emptor! A menos que estés usando una red IPv6 pura, yo me sentaría lejos de esta característica.
Problemas conocidos
Hay un problema conocido que se descubrió tarde en las pruebas; los comandos Sub-Document pueden fallar con una NotImplementedException durante escenarios de failover/swap/rebalance. Este problema se solucionará en una versión posterior; puede obtener más información al respecto en Jira.
Notas de la versión - Couchbase .NET client library - Versión 2.3.3
- [NCBC-1127] - Exponer CAS en fragmentos de documentos
- [NCBC-1143] - Subdocument Exists siempre devuelve true
- [NCBC-1146] - sustituir GetWithLock por GetAndLock
- [NCBC-1148] - MemcachedBucket.CreateManager lanza NotSupportedException
- [NCBC-1149] - Corrección de un problema en el recuento de referencias de cubos
- [NCBC-1151] - Subdocumento - El reemplazo singular siempre falla
- [NCBC-1154] - Llamar a ToString en QueryResult puede lanzar NRE
- [NCBC-1092] - Actualizar la dependencia de NewtonSoft a 8.x
- [NCBC-1116] - Añadir métodos async/await para operaciones masivas
- [NCBC-1118] - Permitir la configuración programática de los servicios IO
- [NCBC-1087] - Soporte de IPv6 en la configuración de clientes
- [NCBC-1150] - Subdocumento - La búsqueda falla al obtener un subdocumento jerárquico
Agradecimientos especiales
Un agradecimiento especial a todos los miembros de la comunidad que han contribuido a esta versión, ya sea aportando una pull-request, respondiendo o haciendo una pregunta en los foros o creando un informe de error o una solicitud de función en jira, en particular Brant Burnett de CenterEdge Software.
Cómo conseguirlo
El SDK puede descargarse directamente, a través de NuGet, o clonando y extrayendo el repositorio de Github: