Backend

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 - -
Google - -
Microsoft - -
LinkedIn - -
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