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 |