Esta postagem do blog é a parte 3 de uma série:

Você está pronto para escrever algum código? Nesta postagem do blog, iniciaremos um novo projeto ASP.NET MVC, adicionaremos o SDK do Couchbase a ele com o NuGet e teremos a infraestrutura pronta para começar a usar o Couchbase.

Iniciei no Visual Studio com File->New, selecionei ASP.NET Web Application e, em seguida, selecionei "MVC". Presumo que você tenha alguma familiaridade com o ASP.NET MVC, mas se algo parecer fora do comum para você, deixe um comentário, me envie uma mensagem no Twitterou envie-me um e-mail (matthew.groves AT couchbase DOT com) com suas perguntas.

Instalação da biblioteca do cliente Couchbase

A primeira coisa que precisamos fazer é adicionar o cliente Couchbase .NET. Você pode fazer isso com a interface do usuário do NuGet, clicando com o botão direito do mouse em "References" (Referências), clicando em "Manage NuGet Packages" (Gerenciar pacotes NuGet), clicando em "Browse" (Procurar) e pesquisando "CouchbaseNetClient". (Se quiser, você pode procurar por "Linq2Couchbase" em vez disso. A instalação desse pacote também fará com que o CouchbaseNetClient seja instalado, mas na verdade não usarei nenhum Linq2Couchbase até posts posteriores no blog).

NuGet UI for installing CouchbaseNetClient

Se preferir a linha de comando do NuGet, abra o console do Package Manager e digite Instalar o pacote CouchbaseNetClient.

NuGet Package Manager Console for installing CouchbaseNetClient

Como fazer com que o aplicativo ASP.NET se comunique com um cluster do Couchbase

Agora vamos configurar o aplicativo ASP.NET para poder se conectar ao Couchbase. A primeira coisa que precisamos fazer é localizar o cluster do Couchbase. O melhor lugar para fazer isso é no Global.asax.cs quando o aplicativo é iniciado. No mínimo, precisamos especificar um nó no cluster e fornecê-lo ao comando Ajudante de cluster. Isso só precisa ser feito uma vez em Início_do_aplicativo. Quando o aplicativo terminar, é uma boa ideia fechar o Ajudante de cluster para limpar e descartar recursos que não são necessários.

Algumas observações:

  • Este código pressupõe que você esteja executando um nó do Couchbase em seu computador local (localhost). Se isso não for verdade, substitua por localhost. Por exemplo, eu tenho um nó do Couchbase em execução em uma máquina diferente no meu escritório, então eu substituiria novo Uri("http://192.168.1.5").
  • UseSsl está definido como false, porque não tenho um certificado em execução no meu nó do Couchbase. Se você estiver acessando o Couchbase pela Internet, poderá usar o SSL para evitar que o tráfego de dados seja enviado de forma clara.

Configuração de um contêiner IoC

Depois que o ClusterHelper for inicializado, poderemos usá-lo para acessar os buckets.

Há muitas maneiras de proceder para conectar as dependências em seu aplicativo, mas eu gosto de usar um contêiner IoC. Há muitas ferramentas de IoC disponíveis para .NET, mas a minha favorita é Mapa de estrutura. Há outro pacote NuGet que integra o StructureMap ao MVC para você. Depois de instalá-lo, os objetos do controlador MVC serão instanciados por meio do StructureMap. Instale com o NuGet (UI ou console), StructureMap.MVC5.

Installing StructureMap.MVC5 with NuGet

Ele adicionará o StructureMap ao seu projeto, bem como vários outros arquivos. Um deles é o DefaultRegistry.cs, que configura o StructureMap para usar as convenções padrão.

O que precisaremos fazer com o Couchbase é modificar esse registro para que o StructureMap possa nos fornecer uma instância do IBucket. Um IBucket, então, é usado para interagir com um bucket do Couchbase (obter documentos, adicionar documentos, atualizar documentos e assim por diante). Veja a seguir como configurar um registro do IBucket:

Neste exemplo:

  • Estou usando o ClusterHelper para obter um bucket específico (que chamei de "hello-couchbase", mas você pode chamar como quiser). Certifique-se de que esse bucket exista no Couchbase (você pode usar o "default" ou um dos buckets de exemplo se tiver configurado um em Parte 1 desta série do blog).
  • Não é obrigatório colocar uma senha em um bucket, mas é uma boa ideia.
  • A instância do IBucket é um singleton, porque não há motivo para ter várias instâncias dele.

Usando o IBucket em um controlador

Apenas para mostrar que isso funciona, vá em frente e adicione o IBucket a um construtor de um controlador, por exemplo, HomeController. O StructureMap já foi configurado para instanciar os controladores e já dissemos a ele como instanciar um IBucket. (A longo prazo, você provavelmente não desejará usar o IBucket diretamente no controlador; falaremos mais sobre isso em posts futuros do blog).

Em seguida, adicione um documento ao seu bucket, diretamente no Console do Couchbase. Anote a chave que você fornecer a ele.

Specifying a key for a new document in Couchbase

Creating a document in Couchbase

Agora, adicione uma ação ao HomeController. Essa é uma ação descartável apenas para fins de demonstração. É a coisa mais simples que pode ser feita: ela obterá o documento com base na chave e escreverá os valores do documento na resposta.

doc.Value é do tipo dinâmicoPortanto, certifique-se de que os campos que você usa (no meu caso, nome e endereço) correspondam ao documento JSON que você colocou no bucket. Execute seu site MVC em um navegador e você verá algo parecido com isto:

Outputting the document values to a browser

Parabéns, você conseguiu criar um site ASP.NET que usa o Couchbase. Não foi tão difícil, foi?

Conclusão

Mostrei a você os princípios básicos de conexão e uso do Couchbase no ASP.NET MVC. Mas podemos fazer muito melhor. Na próxima postagem do blog, mostrarei como usar o Linq2Couchbase para criar uma entidade, um repositório, e como usar esse repositório para criar um site com funcionalidade real. Como sempre, se você precisar de ajuda com qualquer coisa, deixe um comentário, me envie uma mensagem no Twitterou envie um e-mail para mim (matthew.groves AT couchbase DOT com).

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

2 Comentários

  1. Fiz tudo o que foi explicado aqui, mas não estou conseguindo resolver o erro de injeção de dependência
    "Nenhum construtor sem parâmetros definido para este objeto.". Há algo mais que precise ser feito para o StructureMap side....?

    1. Observe que esta postagem do blog foi escrita com o Couchbase Server 4.x em mente. Se você estiver usando a versão 5 ou 6, é possível que o ClusterHelper.OpenBucket não esteja retornando um bucket. A autenticação foi alterada entre as versões 4 e 5.

      Você também pode querer ter certeza de que está seguindo as convenções do StructureMap, pois eu uso "scan.WithDefaultConventions()" nesse exemplo.

      Por fim, desde a época em que escrevi esta postagem, o StructureMap foi descontinuado em favor do Lamar (https://jasperfx.github.io/lamar/), portanto, talvez você queira mudar para ele se puder.

Deixar uma resposta