Este projeto tem como objetivo explorar o funcionamento do SolrNet no consumo do serviço de search engine Solr em projetos .NET Core.
Após o clone do projeto e siga os passos descritos na etapa de instalação.
git clone https://github.com/AntonioFalcao/SolrDotnetSample.git
Se faz necessário ambiente com seguintes recursos:
- .NET Core SDK - The framework used.
To check this functionality:
dotnet --version
For more details
dotnet --info
- Entity Framework Core .NET Command-line Tools - The ORM service used.
To install:
dotnet tool install --global dotnet-ef
To check this functionality:
dotnet-ef --version
- Docker - The container platform used
To check this functionality:
docker --version
Com o uso de containerização, podemos provisionar de forma prática a infraestrutura necessária.
Inicialmente utilizaremos o serviço Solr, para atender a necessidade de Search Engine, através do compose ./solr-compose
.
docker-compose -f solr-compose.yml up -d
O índice padrão, referido como Core pelo Solr está definido como my_core
no entrypoint
, assim como o mapeamento de porta padrão 8983:8983
:
services:
# comment for brevity
ports:
- "8983:8983"
entrypoint:
- solr-precreate
- my_core
# comment for brevity
A definição dos Fields no Solr é um passo essencial, para garantir que o dado terá a mesma representação desejada pelo modelo.
Existem dois caminhos para isso, um deles é definir os detalhes dos fields no schema.xml, a outra forma é realizando chamadas direta à API do serviço. Para segunda alternativa, existe o arquivo solr-add-fields.http disponível no projeto:
POST http://localhost:8983/solr/my_core/schema
Content-Type: application/json
{
"add-field":{
"name":"Description",
"type":"string",
"stored":true
},
"add-field":{
"name":"Title",
"type":"string",
"stored":true
},
}
### comment for brevity
Uma vez provisionado o ambiente e configurado os fields, podemos semear dados através dos passos:
- Aplicar migrations do EF Core, que já se encarregará do Seed para o DB relacional.
Nesta etapa irá ocorrer a semeadura de dados para o DB relacional.
dotnet ef database update -s ./src/SolrDotnetSample.WebApi/ -p ./src/SolrDotnetSample.Repositories/
- Executar aplicação console e selecionar opção de semeadura para o Solr.
Duas opções estarão disponíveis, sendo:
- Gerar novos dados.
- Migrar dados do relacional.
docker build -t seed -f ./consoleApp.Dockerfile . && docker run -it seed
Os testes unitários e de integração podem ser executados com o respectivo comando:
dotnet test
Para executarmos testes de forma funcional, devemos inicialmente executar o projeto para disponibilizar o serviço Web.
docker build -t webapi -f ./webApi.Dockerfile . && docker run -p 5000:5000 webapi
O roteamento segue o padrão
http://hostname:port/api/v{version}/controller
Para realizar chamadas, pode estar utilizando o arquivo ./basic-api-call.http através da extensão REST Client, por exemplo:.
/api/v1/...
utiliza o banco de dados relacional.
/api/v2/...
utiliza o Solr
### V1 - Relational DB
GET http://localhost:5000/api/v1/posts
### V2 - NoSql DB
GET http://localhost:5000/api/v2/posts
### V1 - Relational DB
POST http://localhost:5000/api/v1/posts
Content-Type: application/json
{
"Description": "Description",
"ExpiryDate": "2020-01-01",
"IsActive": true,
"IsSold": true,
"PostDate": "2020-01-01",
"Price": 0,
"Title": "Title"
}
### comment for brevity
Detalhes sobre esteira (CI/CD) disponíveis em Project GitHub Actions
- .NET Core - The base framework used
- ASP.NET Core - The web framework used
- EF Core - ORM
- AutoMapper - Library for mapping objects
Available soon!
We use SemVer for versioning. For the versions available, see the tags on this repository.
- Antônio Falcão - GitHub
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details
- Nothing more, for now.