O Couchbase .NET SDK 2.3.3 já está disponível!
Hoje estamos lançando uma versão de manutenção e correção de bugs do Couchbase .NET SDK. Esta é uma versão de acompanhamento das versões 2.3.0 e 2.3.1 (não há uma versão 2.3.2) e sugerimos que você faça a atualização de acordo. Embora seja, em grande parte, uma versão de correção de bugs, há alguns recursos novos e menores que estamos lançando, bem como uma renomeação de API que torna os métodos mais antigos obsoletos.
Novos recursos e alterações
Métodos assíncronos em lote
Adicionamos uma nova API de métodos assíncronos para agrupar uma série de operações em documentos JSON. Eles permitem que você use o conhecido paradigma async/await para executar uma lista de operações de forma não bloqueada:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
var documentos = novo Lista<IDoc<objeto>> { novo Documento<objeto> { Id = "UpsertAsync_Batch_doc1", Conteúdo = novo {Nome = "bob", Espécies = "Gato", Idade = 5} }, novo Documento<objeto> {Id = "UpsertAsync_Batch_doc2", Conteúdo = 10}, novo Documento<objeto> {Id = "UpsertAsync_Batch_doc3", Conteúdo = novo Gato {Nome = "Cleo", Idade = 10}} }; var resultados = aguardar _bucket.UpsertAsync(documentos).ConfigureAwait(falso); |
Percebeu que estamos especificando que o tipo genérico T é um objeto neste exemplo? Ao fazer isso, podemos combinar documentos de tipos variados; se você restringisse T a um tipo mais específico, todos os documentos do lote precisariam ter o mesmo tipo.
Esses métodos foram adicionados para as seguintes operações:
- GetDocumentsAsync: obtém um conjunto de documentos com um conjunto de chaves
- UpsertAsync: atualiza um conjunto existente de documentos ou os insere se eles não existirem
- InsertAsync: insere um conjunto de documentos com falha, se eles existirem
- RemoveASync: remove um conjunto de documentos
- ReplaceAsync: substitui um conjunto de documentos, falhando se eles não existirem
Permitir a configuração programática dos serviços de IO
Há algum tempo, lançamos um novo provedor de IO chamado MUX IONo entanto, só oferecemos suporte à configuração por meio de arquivos App.config ou Web.config. Agora você pode programar seu serviço de IO:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
var configuração = novo Configuração de cliente { Servidores = novo Lista<Uri> { novo Uri(Gerenciador de configuração.Configurações do aplicativo["bootstrapUrl"]) } }; configuração.ConnectionPoolCreator = ConnectionPoolFactory.GetFactory<Pool de conexões<MultiplexingConnection (Conexão de multiplexação)>>(); configuração.IOServiceCreator = IOServiceFactory.GetFactory<ServiçoIOS de multiplexação>(); Ajudante de cluster.Inicializar(configuração); |
Um grande agradecimento ao membro da comunidade Petr Drastil por enviar um PR para esse recurso!
Atualize o pacote NewtonSoft para a versão 8.0.3
Finalmente, fizemos o upgrade da versão 6.0.8 para a 8.0.3, em grande parte para oferecer suporte a um serializador JSON compatível com o .NET Core.
Renomear GetWithLock para GetAndLock
Isso foi feito para que pudéssemos ter alguma consistência entre os vários SDKs do Couchbase (Java, PHP, etc.). Todos os métodos GetWithLock foram marcados como "obsoletos" usando o ObsoleteAttribute .aspx). Se você estiver usando esses métodos, receberá um aviso do compilador. Observe que esses métodos não serão removidos até que uma versão principal (3.x, por exemplo) do SDK seja lançada.
Suporte a IPv6
Agora você pode definir uma configuração global para que o cliente use somente entradas IPv6 ao resolver um nome de domínio totalmente qualificado (FQDN). Eu classificaria esse recurso como "experimental", pois ele não foi testado exaustivamente, portanto, cuidado! A menos que você esteja usando uma rede puramente IPv6, eu não usaria esse recurso!
Problemas conhecidos
Há um problema conhecido que foi descoberto tardiamente nos testes: os comandos do subdocumento podem falhar com uma NotImplementedException durante cenários de failover/swap/rebalanceamento. Isso será corrigido em uma versão posterior - você pode ler mais sobre isso em Jira.
Notas de versão - Biblioteca cliente do Couchbase .NET - Versão 2.3.3
- [NCBC-1127] - Expor o CAS em fragmentos de documentos
- [NCBC-1143] - Subdocument Exists sempre retorna true
- [NCBC-1146] - substituir GetWithLock por GetAndLock
- [NCBC-1148] - MemcachedBucket.CreateManager lança NotSupportedException
- [NCBC-1149] - Correção de um problema na contagem de referências de baldes
- [NCBC-1151] - Subdocumento - A substituição no singular sempre falha
- [NCBC-1154] - A chamada de ToString em QueryResult pode gerar NRE
- [NCBC-1092] - Atualizar a dependência do NewtonSoft para a versão 8.x
- [NCBC-1116] - Adicionar métodos async/await para operações em massa
- [NCBC-1118] - Permitir configuração programática para serviços de IO
- [NCBC-1087] - Suporte a IPv6 na configuração do cliente
- [NCBC-1150] - Subdocumento - A pesquisa falha ao obter um subdocumento hierárquico
Agradecimentos especiais
Um agradecimento especial a todos os membros da comunidade que contribuíram para esta versão, seja contribuindo com um pull-request, respondendo ou fazendo uma pergunta nos fóruns ou criando um relatório de bug ou uma solicitação de recurso no jira, principalmente Brant Burnett do CenterEdge Software.
Como obtê-lo
O SDK está disponível para download diretamente, por meio do NuGet, ou clonando e extraindo o repositório do Github: