Presentation
Presentation este un SPA (Single Page Application) care foloseste Angular si Typescript pentru a implementa facil modelele de domeniu si logica de business care sunt compatibile cu elementele similare din microservicii.
*Fiind un microserviciu, Presentation este scris, de asemenea, folosind principiile SOLID pentru a:
- fi reactiv la evenimentele care folosesc RabbitMq;
- stoca datele proprii folosind baze de date separate;
- interactiona cu alte microservicii prin HTTP folosind Consul pentru obtinerea IP-ului si port pentru utilizarea DNS;
- evita erorile folosind Polly, segrega logica de business implementand pattern-ul Command pattern prin utilizarea MediatR.
CRMService
CRMService are rolul de a manageria utilizatorii, configura compania de administrare si stoca datele in PostgreSQL.
CRMService contine urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- EntityFramework Core ca ORM;
- OpenAPI;
- Steeltoe ca si client pentru Consul;
- MediatR pentru segregarea logicii de business.
TmService
TmService integreaza contracte, produse, servicii cu optiuni management si stocare a fluxurilor de activitati. TmService receptioneaza evenimentele prin RabbitMq pentru a marca produsele cand se emit facturile automat. (stocheaza datele in PostgreSQL)
TmService utilizeaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- MassTransit for RabbitMq client si implementari pub/sub pattern;
- EntityFramework Core ca ORM;
- OpenAPI;
- Steeltoe ca si client pentru Consul;
- MediatR pentru segregarea logicii de business.
FinancialService
FinancialService este un microserviciu care urmareste toate facturile si tranzactiile si care permite crearea automata sau manuala de facturi. FinancialService interactioneaza cu PdfService, CrmService, TmService si ApiOrchestrator direct prin HTTP si trimite evenimente catre TmService prin RabbitMq. Stocheaza , de asemenea, datele in PostgreSQL.
FinancialService utilizeaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- MassTransit pentru RabbitMq client si implementari pub/sub pattern;
- EntityFramework Core ca ORM;
- OpenAPI;
- Polly pentru circuit breaker;
- Hangfire pentru programarea de job-uri;
- Refit pentru facilitarea comunicarii cu alte microservicii prin HTTP;
- Steeltoe ca si client pentru Consul;
- MediatR pentru segregarea logicii de business.
PdfService
PdfService este un serviciu agnostic ce comunica prin server-ul FTP cu posibilitatea de a stoca, citi si genera pdf-uri.
PdfService utilizeaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- IronPdf library pentru a genera pdf-uri din template-urile .cshtml;
- OpenAPI;
- Steeltoe ca si client Consul;
- MediatR pentru segregarea logicii de business.
EmailService
EmailService este un microserviciu agnostic care trimite email-uri catre conturi specifice folosind Sendgrid client.
EmailService foloseste urmatoarele tehnologii:
- C#, Asp.Net 5;
- OpenAPI;
- MassTransit for RabbitMq client si implementari pub/sub pattern;
- SendGrid client;
- MediatR pentru segregarea logicii de business.
Authentication
Authentication este un microserviciu ce creeaza conturi, genereaza toke-uri si pastreaza logica pentru autentificari. Stocheaza , de asemenea, datele in PostgreSQL.
Integreaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- OpenAPI;
- MediatR pentru segregarea logicii de business;
- MailKit pentru implementare custom smtp logic;
- Steeltoe ca si client pentru Consul;
- JWT pentru autorizare.
ApiGateway
ApiGateway este un serviciu de tip gateway ce are rolul de a expune puncte finale pentru microservicii si logica de autorizare. Este singurul serviciu care comunica direct cu aplicatiile clientului.
ApiGateway integreaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- Ocelot library pentru implementarea API Gateway folosind microserviciile DNS stocate in Consul;
- JWT pentru autorizare.
ApiOrchestrator
ApiOrchestrator implementeaza logica de business personalizata prin agregarea datelor pe mobil si in facturi.
ApiOrchestrator integreaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- MediatR pentru segregarea logicii de business;
- OpenAPI;
- Polly pentru circuit breaker.
Proiectele cumune sunt folosite pentru implementarea principiului DRY (Do not Repeat Yourself), aducand un plus de stabilitate solutiei prin faptul ca foloseste o zona comuna de stocare DTOs (Data Transfer Objects) si prin abstractizarea generica a logicii.