Backend
Architecture
Architecture | .NET | Java |
---|---|---|
Domain Layer | ||
Application Layer | ||
Common Layer | ||
Infrastructure Layer | ||
Web Layer | ||
Test Layer |
Core
Application Layer | .NET | Java |
---|---|---|
Commands | ||
Queries | ||
Command Handlers | ||
Application Context |
Domain Layer | .NET | Java |
---|---|---|
Entities | ||
Identities | ||
Value Objects | ||
Repository Interfaces | ||
Domain Services | ||
Domain Events | ||
Factories |
Common Layer | .NET | Java |
---|---|---|
Enums | ||
Resource Translations |
Web
Web Layer - REST API | .NET | Java |
---|---|---|
GET - Getting a single resource by id | ||
GET - Getting all resources (ids, names) | ||
GET - Paging, sorting, filtering | ||
GET - Exporting data to a file | ||
POST - Creating a single resource | ||
POST - Performing an operation on a single resource | ||
POST - Importing data from a file | ||
PUT - Updating a single resource | ||
DELETE - Deleting a single resource |
Infrastructure
Infrastructure Layer - Repositories | .NET | Java |
---|---|---|
Repository implementations with ORM | ||
Repository implementations with raw SQL, parameterized SQL, stored procedures | ||
Repository implementations with sql bulk operations (bulk update, bulk delete, bulk insert) | ||
Repository implementations for batch operations (errors and re-try) | ||
Repository implementations with NoSQL databases | ||
Repository implementations with files as data source |
Infrastructure Layer - Query Handlers | .NET | Java |
---|---|---|
Query handlers with ORMs | ||
Query handlers with mixed data sources and data enrichment |
Infrastructure Layer - Files | .NET | Java |
---|---|---|
Reading from and writing to various file formats (CSV, TSV, Excel, PDF) | ||
Importing data from files and other sources (reading, validation, updates) |
Infrastructure Layer - File System | .NET | Java |
---|---|---|
Local File System | ||
Remote File System | ||
S3 | ||
Azure |
Infrastructure Layer - Data Sources | .NET | Java |
---|---|---|
REST client for communicating with REST services (authentication and executing REST API methods) | ||
SOAP client for communicating with SOAP services (authentication and executing SOAP methods) | ||
Process client for executing command line processes (executing local process amd remote procedure calls) | ||
FTP client for communicating with FTP services (uploading files, downloading files, authorization) |
Infrastructure Layer - Messaging | .NET | Java |
---|---|---|
Sending messages to a message broker | ||
Receiving messages from a message broker |
Infrastructure Layer - Jobs | .NET | Java |
---|---|---|
Configuring and executing job schedulers |
Infrastructure Layer - Logging | .NET | Java |
---|---|---|
Logging to various targets (files, databases) | ||
Logging with various levels (trace, debug, info, warning, error, critical) |
Infrastructure Layer - Authentication | .NET | Java |
---|---|---|
OpenId Connect (authentication with an identity provider) | ||
API Key (authentication via API key) | ||
OAuth (authentication via OAuth) | ||
Custom authentication (authentication via custom provider) | ||
Authentication with Google, Microsoft, LinkedIn, GitHub | ||
Authentication as part of API and separate | ||
User identity with custom attributes | ||
LDAP | ||
Azure |
Infrastructure Layer - Configuration | .NET | Java |
---|---|---|
File-based configuration | ||
Database-based configuration | ||
Multiple environments |
Infrastructure Layer - Authorization | .NET | Java |
---|---|---|
Role-based authorization (RBAC) | ||
Permission-based authorization (ABAC) |
Infrastructure Layer - Validation | .NET | Java |
---|---|---|
Declarative / fluent validation |
Infrastructure Layer - Mapping | .NET | Java |
---|---|---|
Declarative / fluent mapping |
Infrastructure Layer - Alerting | .NET | Java |
---|---|---|
Heartbeat checking for key systems | ||
Sending emails to system administrators in case of failure, error reports |
Infrastructure Layer - Networking | .NET | Java |
---|---|---|
TCP | ||
UDP |
Infrastructure Layer - Reactivity | .NET | Java |
---|---|---|
Push-based systems | ||
Pull-based systems |
Test
Test Layer | .NET | Java |
---|---|---|
Unit tests | ||
Integration tests |
Packages
Web
Web Layer | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
REST API | AspNetCore | - | ||
Swagger | Swashbuckle | - | ||
Hateoas | AspNetCore.Hateoas | - |
Infrastructure
Infrastructure Layer - Aspects | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
Authentication | - | - | ||
Authorization | - | - | ||
Validation | - | - | ||
Mapping | AutoMapper | - | ||
Validation | FluentValidation | - | ||
Mapping | - | - | ||
Transactions | - | - | ||
Logging | Serilog / Ben.Demystifier | - | ||
Exception Handling | - | - | ||
Performance Profiling | - | - | ||
Localization and Internationalization | - | - |
Infrastructure Layer - Authentication | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
OpenId Connect | IdentityServer4 | - | ||
OAuth 2 | - | - | ||
- | - | |||
Microsoft | - | - | ||
- | - |
Infrastructure Layer - Clients | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
REST Client | AspNetCore | - | ||
SOAP Client | - | - | ||
FTP Client | - | - | ||
Process Client | - | - |
Infrastructure Layer - Files | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
CSV Files | CsvHelper | - | ||
Excel Files | ClosedXML | - |
Infrastructure Layer - Generators | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
GUID Generation | SequentialGuid | - |
Infrastructure Layer - Jobs | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
Background Jobs | Hangfire | - |
Infrastructure Layer - Generators | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
In-memory Messaging | MediatR | - | ||
Messaging Broker | RabbitMQ | RabbitMQ | ||
Distributed Streaming | Kafka | Kafka |
Infrastructure Layer - Persistence | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
ORM | EntityFrameworkCore | Hibernate | ||
Micro ORM | Dapper | - | ||
Document Database | MongoDB | MongoDB | ||
Memory Database | Redis | Redis | ||
Graph Database | Neo4j | Neo4j |
Infrastructure Layer - Serialization | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
JSON Serialization | Newtonsoft.Json | - | ||
XML Serialization | - | - | ||
TXT Serialization | - | - |
Test
Test Layer | .NET Package | Java Package | .NET | Java |
---|---|---|---|---|
Test Runner | xUnit | - | ||
Assertions | FluentAssertions | - | ||
Mocking | Moq | - | ||
Browser Driver | Selenium | - | ||
BDD | SpecFlow | - |
Other
Other | .NET | Java |
---|---|---|
Containerization | ||
Load Balancing |