Este mês, temos algumas versões de manutenção antes de lançarmos o Couchbase .NET SDK 2.1.0! A versão 2.1.0 será um lançamento significativo para o SDK, especialmente porque teremos suporte para as palavras-chave async/await e um novo modelo de IO sem bloqueio para operações assíncronas! Esperávamos incluir o async/await nesta versão, mas ainda estávamos integrando e testando.
Aqui está uma prévia do que esperar:
Em nossos testes, obtivemos até 10 vezes mais desempenho com os novos métodos async/await do que com a API síncrona padrão! Estamos prevendo que essa versão (2.1.0) será lançada na primeira semana de abril de 2015, portanto, fique atento.
O que há na versão 2.0.3?
O Couchbase .NET SDK 2.0.3 é uma versão de manutenção/correção de bugs para o 2.0.2. Honestamente, é um pouco anêmico, pois a maior parte dos esforços de desenvolvimento está concentrada na versão 2.1.0, mas aqui estão os tickets do Jira:
Bug
- [NCBC-802] - ConnectionTimeout deve ser SendTimeout em Configuration.*
- [NCBC-818] - Se ClientConfiguration contiver uma senha, o ClusterHelper deverá respeitá-la
- [NCBC-824] - Exceção de autenticação ao abrir o bucket do memcached com a senha do ClientConfiguration
Melhoria
- [NCBC-801] - Adicionar versões assíncronas de todos os métodos ao BucketManager e ao ClusterManager
- [NCBC-811] - Tornar configurável a duração da operação
- [NCBC-816] - Tornar a API de declaração preparada do .NET semelhante ao Java SDK
Os principais recurso é a adição de métodos assíncronos para as classes ClusterManager e BucketManager. Eles faziam parte de uma incrível solicitação pull do Weitao Lee!
O que mudou?
As principais mudanças são NCBC-802, NCBC-811e NCBC-816. Para a NCBC-802, é importante observar que a propriedade ConnectionTimeout agora é SendTimeout, porque, bem... isso é realmente o que ele configura; o tempo máximo que uma operação pode ficar em IO antes de falhar - principalmente para encerrar explicitamente a operação se o servidor não estiver respondendo, por exemplo. O NCBC-811 define o tempo limite de uma operação, ou seja, a quantidade total de tempo que uma operação pode ficar em andamento antes de retornar com um tempo limite ou ser bem-sucedida. O padrão é 2500ms, mas isso pode ser alterado pela propriedade ClientConfiguration.DefaultOperationLifespan.
Na versão 2.0.2, lançamos o suporte para o N1QL DP4. Nessa versão, formalizamos a API para Prepared Statements, tornando-a consistente com a forma como o Java SDK lida com Prepared Statements. A partir da versão 2.0.3, o cliente não armazenará mais em cache um prepared statement; a camada de aplicativo deve fazer isso, no entanto, já que o custo de solicitar um prepared statement e depois usá-lo agrega pouco valor. Portanto, se você optar por usar declarações preparadas, a melhor opção é definir um dicionário estático threadsafe, como ConcurrentDictionarye armazenar em cache e reutilizar a declaração preparada depois de solicitá-la.
Como faço para obtê-lo?
Os pacotes estão disponíveis no NuGet, S3 ou você pode obter a fonte diretamente do mestre usando a tag "2.0.3" ou "1.3.11":
Acho que você cometeu um erro no exemplo de código: removeTasks, insertTasks e getTasks são todos definidos da mesma forma.