Excalibur.Hosting

A project within Excalibur to define the classes and methods related to hosting services.


Keywords
License
Other
Install
Install-Package Excalibur.Hosting -Version 2.0.24

Documentation

Excalibur Framework

github-release-badge github-release-date-badge github-downloads-total-badge github-downloads-badge

Excalibur is a modular framework designed to simplify Domain-Driven Design (DDD) implementations. It provides tools and abstractions for building robust, scalable, and testable applications. It provides tools, abstractions, and helpers for efficient data integration, multi-database support, and hosting flexibility, whether as web services or background jobs.

Nuget Packages

Package ID Latest Version Downloads
Excalibur.A3 nuget-p1-version nuget-p1-downloads
Excalibur.A3.Postgres nuget-p2-version nuget-p2-downloads
Excalibur.A3.SqlServer nuget-p3-version nuget-p3-downloads
Excalibur.Application nuget-p4-version nuget-p4-downloads
Excalibur.Core nuget-p5-version nuget-p5-downloads
Excalibur.Data nuget-p6-version nuget-p6-downloads
Excalibur.DataAccess nuget-p7-version nuget-p7-downloads
Excalibur.DataAccess.DataProcessing nuget-p8-version nuget-p8-downloads
Excalibur.DataAccess.ElasticSearch nuget-p9-version nuget-p9-downloads
Excalibur.DataAccess.SqlServer nuget-p10-version nuget-p10-downloads
Excalibur.DataAccess.SqlServer.Cdc nuget-p11-version nuget-p11-downloads
Excalibur.Domain nuget-p12-version nuget-p12-downloads
Excalibur.Hosting nuget-p13-version nuget-p13-downloads
Excalibur.Hosting.Jobs nuget-p14-version nuget-p14-downloads
Excalibur.Hosting.Web nuget-p15-version nuget-p15-downloads
Excalibur.Jobs nuget-p16-version nuget-p16-downloads
Excalibur.Jobs.Quartz.Cdc nuget-p17-version nuget-p17-downloads
Excalibur.Jobs.Quartz.DataProcessing nuget-p18-version nuget-p18-downloads
Excalibur.Jobs.Quartz.Outbox nuget-p19-version nuget-p19-downloads

Key Features

1. Domain-Driven Design (DDD)

  • Aggregates and Repositories:
    • Base classes for managing domain aggregates.
    • Extensible repositories for CRUD and custom operations.
  • Value Objects:
    • Immutability and equality mechanisms to align with DDD principles.
  • Query Providers:
    • Abstractions for encapsulating domain-specific SQL logic into reusable and testable components.

2. Database Abstractions

  • Data Queries:
    • Encapsulation of SQL queries into modular DataQuery<T> classes.
    • Separation of SQL logic from business logic for enhanced testability.
  • Multi-Database Support:
    • Out-of-the-box support for PostgreSQL and SQL Server.
    • Easily extensible for other databases by implementing query providers.
  • Query Providers:
    • Interfaces and database-specific implementations (e.g., PostgreSQL, SQL Server).
    • Abstract SQL queries into reusable, testable components.

3. Data Integration

  • Synchronization helpers for integrating external APIs with your database.
  • Structured logging and caching mechanisms for optimized data handling.

4. Hosting Flexibility

  • Helpers for deploying services as:
    • Web Services: Build RESTful APIs or GraphQL endpoints using ASP.NET Core.
    • Job Services: Background job support for tasks such as syncing or processing data.

5. Multi-Database Support

  • Support for multiple database types (PostgreSQL, SQL Server).
  • Plug-and-play query providers for easy extensibility.

Installation and Setup

Prerequisites

Hosting Options

Web Services

  1. Configure the framework in an ASP.NET Core application.

Job Services

  1. Implement background jobs for syncing or processing data.

Testing

  1. Unit Tests:

    • Use xUnit with shouldly for assertions and FakeItEasy to mock dependencies in clear well defined tests.
    • Focus on services and repositories in isolation.
  2. Integration Tests:

    • Test DataQuery classes with real databases (PostgreSQL or SQL Server).
    • Validate query provider correctness.
  3. Functional Tests:

    • Simulate end-to-end flows for APIs or job services.

📖 Documentation

Full documentation for Excalibur Framework is available in our GitHub Wiki.

🔹 Learn how to get started, configure modules, and explore advanced features.

🔹 Find integration details and best practices.

📚 View the Documentation →


Contributing

We welcome contributions! Check out our Contributing Guidelines to get started.