Jeff Morris já escreveu um excelente publicação no blog para apresentar o SDK do Couchbase .NET Coreque agora está na visualização para desenvolvedores.
Vou mostrar a você algumas das ferramentas que estou usando para escrever o .NET Core no Windows: Visual Studio Code com NuGet e outras extensões.
Primeiros passos
Aqui está o que estou usando no Windows, mas observe que isso não deve ser muito diferente no Mac ou no Linux!
- Instalar .NET Core
- Instalar Código do Visual Studio (VSC) - isso é opcional, mas é uma ótima ferramenta e é gratuita!
Depois de instalar o Visual Studio Code, recomendo que você instale essas extensões:
- C# (desenvolvido pela OmniSharp) - Isso lhe dará alguns dos recursos normais do C# que você espera se já tiver usado o Visual Studio com o .Net Core antes: realce de sintaxe, IntelliSense e assim por diante.
- Gerente de projetos NuGet do .Net Core
Você pode instalar essas extensões diretamente no Visual Studio Code usando a interface do usuário, ou pode usar Ctrl+P e, em seguida, digite ext install net-core-project-manager ou ext install csharp. Manter Ctrl+P em sua mente, pois quando tiver o NuGet Project Manager instalado, você também o usará para instalar o um pacote NuGet no Visual Studio Code.
Vamos escrever um código
Use o Powershell ou o CMD para criar uma pasta de projeto. Quando você estiver lá:
dotnet new
Isso criará alguns arquivos: Program.cs e project.json.

Em seguida, para obter as dependências listadas em project.json, execute outro comando:
restauração do dotnet
Agora você pode notar uma project.lock.json arquivo. Ele é gerado pelo NuGet para calcular o gráfico de dependências. Não é necessário confirmá-lo no repositório de código-fonte, e eu o omiti do código-fonte do meu exemplo.
Agora, vou abrir essa pasta no Visual Studio Code, executando:
código .
Nesse ponto, o projeto está pronto para ser executado. Você pode voltar ao Powershell/CMD, se desejar, ou pode usar Ctrl+` para usar o Terminal integrado dentro do VSC. Para executar o programa:
execução do dotnet
Se você executasse isso agora, receberia um "Hello World". Vamos adicionar um pouco de Couchbase a esse projeto. Ctrl+Pe, em seguida, digite ">nuget" até que a opção "Add New Package" seja exibida. Digite um termo de pesquisa, como "couchbase". O "CouchbaseNetClient" deve aparecer na lista. Selecione-o e, em seguida, você poderá selecionar uma versão.

Atualmente, para o .NET Core, você precisará selecionar 2.4.0-dp2, pois o suporte ao .NET Core ainda é uma "prévia para desenvolvedores".
Depois de adicionar isso ao seu projeto, o trabalho com o SDK do .NET Core deverá ser familiar para você se já tiver usado o SDK do .NET. Dentro da seção Principal veja como se conectar a um cluster e configurar um bucket:
|
1 2 3 4 5 |
// connect to a cluster, get a bucket ClusterHelper.Initialize(new ClientConfiguration { Servers = new List { new Uri("couchbase://localhost")} }); var bucket = ClusterHelper.GetBucket("default"); |
Em seguida, estou inserindo um documento "conta de luz" usando o objeto bucket. Observe que estou usando o método Async. De acordo com a publicação no blog de Jeff, a API síncrona pode estar desaparecendo, portanto, estou tentando me acostumar com a API assíncrona. Estou usando Task.WaitAllportanto, ele ainda está sendo executado de forma síncrona para os fins deste aplicativo de console de amostra.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// insert a document with some random values var document = new Document { Id = Guid.NewGuid().ToString(), Content = new { invoiceNumber = Path.GetRandomFileName(), amountDue = new Random().Next(10,300), type = "electricbill" } }; Task.WaitAll(bucket.InsertAsync(document)); // wait for async method to finish Console.WriteLine("New electric bill created."); Console.WriteLine(); |
Em seguida, estou executando uma consulta N1QL parametrizada com Consistência do RequestPlus para listar todas as contas de energia elétrica.
|
1 2 3 4 5 |
// get all electric bills with N1QL and list them var query = Couchbase.N1QL.QueryRequest.Create("SELECT b.* FROM `default` b WHERE type = $1"); query.AddPositionalParameter("electricbill"); query.ScanConsistency(ScanConsistency.RequestPlus); var result = bucket.QueryAsync(query).Result; // calling QueryAsync synchronously |
Novamente, isso está usando a API Async, mas como estou chamando ResultadoÉ funcionalmente síncrono. Por fim, com base nos resultados da consulta N1QL, estou enviando informações de erro ou fazendo um loop pelos resultados e gravando-os no console.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Console.WriteLine("Success: " + result.Success); if(!result.Success) { Console.WriteLine("Message: " + result.Message); Console.WriteLine("Exception: " + result.Exception?.GetType().Name); Console.WriteLine("Exception Message: " + result?.Exception?.Message); result.Errors.ForEach(e => Console.WriteLine("Error: " + e?.Message)); return; } Console.WriteLine(); Console.WriteLine("Bills:"); Console.WriteLine("------"); foreach(var bill in result.Rows) { Console.WriteLine($"{bill.invoiceNumber} - {bill.amountDue.ToString("C")}"); } |
Quando eu executar esse programa, ele criará um novo documento (a cada vez) e listará todos os documentos criados cumulativamente.

Observação: se estiver tendo problemas para começar a usar o Couchbase Server, ou se estiver recebendo erros, especialmente em relação à indexação N1QL, talvez queira revisitar algumas das minhas postagens do blog "Getting Started" (Introdução): Couchbase com Windows Parte 1 e Couchbase com Windows Parte 2 em particular.
O que há de diferente?
Na maior parte do tempo, isso é muito parecido com trabalhar com o Visual Studio e o .NET completos. O Visual Studio Code ainda não tem recursos tão completos, mas já possui uma grande biblioteca de extensões. Para os desenvolvedores do Couchbase, trabalhar com o .NET Core SDK é praticamente idêntico.
Um aspecto com o qual pode levar algum tempo para se acostumar é a falta do ReSharper. Não sei se o ReSharper virá para o VSC (a JetBrains tem seu próprio IDE C# leve chamado Cavaleiro). Tenho o hábito de usar Alt+Enter para adicionar usando e esse mesmo atalho de teclado não funciona no VSC (por padrão). As lâmpadas de refatoração ainda aparecem, e aqui estão os namespaces para o registro:
|
1 2 3 4 5 6 7 |
using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Couchbase; using Couchbase.Configuration.Client; using Couchbase.N1QL; |
Também é um pouco estranho criar um projeto com dotnet new em vez de File→New, mas isso é algo com o qual posso me acostumar.
Resumo
Mesmo que não planeje escrever código .NET Core ainda, você deve dar uma olhada no Visual Studio Code. Ele é um ótimo editor de texto, se não houver mais nada. Se você estiver escrevendo .NET com o Couchbase, a parte do Couchbase da sua transição para o .NET Core deve ser tranquila (sua milhagem pode variar ao se acostumar com as novas ferramentas do .NET Core).
Do que você gosta ou não gosta no VSC e no .NET Core? Deixe um comentário abaixo ou me informe no Twitter. Eu sou @mgroves. Se você estiver tendo problemas com o .NET, o .NET Core ou o Couchbase Server, estou aqui para ajudá-lo.