¡Este mes, tenemos un par de versiones de mantenimiento antes de lanzar Couchbase .NET SDK 2.1.0! La versión 2.1.0 será un lanzamiento significativo para el SDK, especialmente porque tendremos soporte para las palabras clave async/await y un nuevo modelo de IO no bloqueante para operaciones asíncronas. Esperábamos poder incluir async/await en esta versión, pero aún estábamos integrándolo y probándolo.
Aquí tiene un anticipo de lo que le espera:
En nuestras pruebas hemos obtenido hasta 10 veces más rendimiento con los nuevos métodos async/await que con la API síncrona estándar. Anticipamos que este lanzamiento (2.1.0) será la primera semana de abril de 2015, así que mantén los ojos abiertos.
¿Qué incluye la versión 2.0.3?
Couchbase .NET SDK 2.0.3 es una actualización de mantenimiento y corrección de errores de la versión 2.0.2. Honestamente es un poco anémica dado que la mayoría de los esfuerzos de desarrollo se centran en 2.1.0, pero aquí están los tickets de Jira:
Error
- [NCBC-802] - ConnectionTimeout debería ser SendTimeout en Configuration.*
- [NCBC-818] - Si ClientConfiguration contiene contraseña, ClusterHelper debe respetarla
- [NCBC-824] - Excepción de autenticación al abrir memcached bucket con contraseña desde ClientConfiguration
Mejora
- [NCBC-801] - Añadir versiones async de todos los métodos a BucketManager y ClusterManager
- [NCBC-811] - Hacer configurable la duración de las operaciones
- [NCBC-816] - Hacer .NET Prepared statement API similar a Java SDK
Los principales función es la adición de métodos asíncronos para las clases ClusterManager y BucketManager. Estos fueron parte de un pull request impresionante de Weitao Lee!
¿Qué ha cambiado?
Los principales cambios son NCBC-802, NCBC-811y NCBC-816. Para NCBC-802, lo que hay que tener en cuenta es que la propiedad ConnectionTimeout es ahora SendTimeout, porque, bueno... eso es realmente lo que configura; la cantidad máxima de tiempo que una operación puede estar en IO antes de fallar - esto principalmente para explitly terminar la operación si el servidor no está respondiendo por ejemplo. NCBC-811 establece el tiempo de espera para una operación, es decir, la cantidad total de tiempo que una operación puede estar en vuelo antes de que regrese con un tiempo de espera o tenga éxito. El valor por defecto es 2500ms, pero esto puede ser cambiado por la propiedad ClientConfiguration.DefaultOperationLifespan.
En la versión 2.0.2, lanzamos soporte para N1QL DP4, en esta versión formalizamos la API para Sentencias Preparadas, haciéndola consistente con la forma en que el SDK de Java maneja las Sentencias Preparadas. A partir de la versión 2.0.3, el cliente ya no almacenará en caché una sentencia preparada; sin embargo, la capa de aplicación debería hacerlo, ya que el coste de solicitar una sentencia preparada y luego utilizarla añade poco valor. Por lo tanto, si decide utilizar sentencias preparadas, su mejor opción es definir un diccionario estático threadsafe, como por ejemplo ConcurrentDictionaryy almacenar en caché y reutilizar la sentencia preparada después de solicitarla.
¿Cómo lo consigo?
Los paquetes están disponibles en NuGet, S3, o puedes extraer el código fuente directamente de master usando la etiqueta "2.0.3" o "1.3.11":
Creo que hay un error en el código del ejemplo: removeTasks, insertTasks y getTasks se definen de la misma manera.