Arquitetura do projeto - Loomi
Índice
Informações Gerais
Ambientes utilizados
Ambiente | URL de Acesso | Credenciais |
---|---|---|
Desenvolvimento | Loomi: http://localhost:62429/ Repository API: http://devpei-repositorio-api.devedu.ms/ MiniGestão API: http://devpei-academico-api.devedu.ms/ |
adminpei - 123456 (Administrador) professorpei1 - 123456 (Professor) alunopei1 - 123456 (Aluno) |
Testes | Loomi: http://pei.devedu.ms/ Repositorio API: http://pei-repositorio-api.devedu.ms/ MiniGestão API: http://pei-academico-api.devedu.ms/ |
adminpei - 123456 (Administrador) professorpei1 - 123456 (Professor) alunopei1 - 123456 (Aluno) |
Demonstração | http://loomi.mstech.com.br/ | Informação exclusiva do Devops/GTI |
Repositório de Versionamento
Ambiente: GITLab - Git
Nome: PEI
Caminho: https://gitlab.mstech.com.br/pei/pei
Estrutura dos branches: Main (Master), Develop (Develop)
Visão de Componentes
Diagrama de Classes
Decisões de Arquitetura
Descrever os seguintes itens:
Persistência de dados:
Data Store | Acesso | Descrição |
---|---|---|
SQL Server 2008 R2 + ![]() |
Entity Framework 6 (Code-First) ![]() |
|
![]() |
MongoDB C# Driver 2.2.4 |
O Loomi utiliza base de dados relacional SQL Server 2008R2+ para os dados transacionais e o MongoDB para o Log. A comunição com o SQL Server é realizada através do ORM Entity Framework versão 6. Já para o MongoDB, utilizamos o driver do C# versão 2.2.4
Log: :
- Framework: Log4Net 2.0.5
- Base de Dados: MongoDB
- Arquitetura: O Log é exposto através da interface ILog. A instância da interface ILog pode ser obtida através da Injeção de Dependência:
public class ExampleController : Controller { private readonly ILog log; public ExampleController(ILog log) { this.log = log; } [HttpGet] public JsonResult Get() { try { return Json("Example Controller"); } catch (Exception ex) { log.Error(ex); Response.StatusCode = (int)HttpStatusCode.InternalServerError; return Json("Something bad happened.", JsonRequestBehavior.AllowGet); } } }
- Consulta: Acesso via sistema, para usuários com perfil de administrador
- Escopo: Configurável atráves dos seguintes métodos:
- Log.Error(ex) - Gera log de erros
- Log.Warn(ex) - Gera log de nível Warning
Padrão de Arquitetura utilizado: Se houve planejamento anterior, qual o padrão utilizado? Domain Driven Design (DDD) usando a estrutura MVC? Usa Webforms com outra arquitetura? Front-end e back-end são separados?
Tecnologia de Front-end: Se houver separação, qual tecnologia/framework foi empregada para o projeto? AngularJS, VUE, JQuery, uma composição deles? Qual padrão de codificação (estrutura de pastas, camadas) está sendo usado no projeto? Quais fatores levaram à decisão do framework e arquitetura definidas?
Tecnologia de Back-End: qual tecnologia/framework foi empregada para o projeto? ASP.NET, Java, NodeJS, uma composição deles? Qual padrão de codificação (estrutura de pastas, camadas) está sendo usado no projeto? Quais fatores levaram à decisão do framework e arquitetura definidas?
Framework de CSS: Está sendo utilizada uma ferramenta SASS? Qual framework está sendo usado? Bootstrap 3, Bootstrap 4, Foundation?
Configurações de Otimização de deploy: O código é minificado? O código está com ofuscação? No ASP.NET foi habilitado o bundle no web.config? Quais configurações para otimizar o código são feitas?
Outros aspectos: Fique à vontade para descrever outras considerações, o importante é deixar as decisões tomadas e padrões adotados bem documentados!
Fundamentações das decisões tomadas
Nesta seção, coloque todas as considerações das tomadas de decisão realizadas para o produto. Porque foi usada tal arquitetura? Porque essa separação de componentes? Porque houve refatoração? Descreva o máximo possível nesta seção para que o histórico das decisões seja armazenado para consultas futuras.