Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test/ConcurrentOrdering.Domain.Tests
.gitignore
ConcurrentOrdering.sln
LICENSE
README.md
appveyor.yml

README.md

VortexSamples.ConcurrentOrdering

Build status

This sample shows how to use Vortex and how you can still use every known concept of ASP Core, like handling Concurrency Conflicts. This project also showcases a recommended project structure for small to medium sized solutions.

Features

  • Controllers built with Vortex monads.

  • Use of built-in ASP Core DI to inject side-effects (Ef Core repositories and Automapper).

  • Injecting behaviors (not dependencies) for the business logic using Vortex.

  • EfCore Concurrency Checks integrated with a global error handling. Note: Concurrency expection errors return a flag AllowRetry so your client app can show better feedback to the user or even automatically retry operations.

  • Sample tests.

  • MVC App using Javascript and jQuery.

  • Appveyor CI.

Project Structure

  • ConcurrentOrdering.Domain: This project contains all classes related with business logic and persistance of the application.

    • Behaviors: Those are static classes that contain the business logic. Each method should be a Pure Function, that give us guarantees on the behavior of the Application's core but also makes it easier to test.

    • Infrastructure: Data-persistance and other side effects.

      • Data: Data-contexts and data-seeds.

      • Repositories: Persistance-related classes.

    • Models: Domain anemic entities.

  • ConcurrentOrdering.Domain.Tests: Sample tests (this doesn't intend to be a complete test suite for a production project).

  • ConcurrentOrdering.Web: This project contains all specific web-app stuff.

    • wwwroot: javascript and css.

    • Commands: Actions that can be executed by the controllers.

    • Controllers: They contain Vortex Monads that handle the execution of an action received by the web-app.

    • Migrations: EfCore migrations.

    • Models: You can add here View Models and other kind of DTOs.

    • Views: Razor views.

You can’t perform that action at this time.