Code Monkey home page Code Monkey logo

akkadotnet-code-samples's Introduction

Akka.NET Code Samples

Akka.NET is a radically different way of developing concurrent and networked applications in .NET, and so it's important to have a number of high quality reference applications developers can explore in order to better understand how to design and model software using Actors and Akka.NET.

The goals of this repository are to provide users with shovel-ready Akka.NET samples that follow "Pit of Success" paradigms for the following areas:

  • Akka.NET features: Persistence, Clustering, and Streams;
  • Integrating Akka.NET with other popular technologies: RabbitMQ, Apache Kafka, and more; and
  • Deploying Akka.NET into popular and common deployment environments: Kubernetes, Azure, AWS, and more.

These samples aren't designed to teach how to model complex domains using actors - they are pimarily designed to demosntrate copy-and-pasteable approaches to running AKka.NET infrastructure correctly and succinctly.

Current Samples:

  1. Akka.NET Cluster.Sharding with Akka.Persistence.SqlServer and Razor Pages
  2. Akka.Streams.Amqp.RabbitMQ with Akka.Cluster.Sharding - Reliable Delivery + Backpressure Support
  3. Event-Sourcing and CQRS with Akka.Peristence and Akka.Peristence.Query

Contributing

We accept pull requests for new samples or changes to existing ones, but we maintain a strict quality standard;

  1. All samples should be framed as self-hosted services and should rely on https://github.com/akkadotnet/Akka.Hosting for management of the ActorSystem;
  2. Samples that require multiple nodes to operate should, ideally, be run inside of Kubernetes or docker compose ;
  3. Each sample needs a complete README.md that explains what the sample does, what a user needs to run it, and a what types of steps they need to execute it;
  4. If a sample requires Kubernetes or docker compose then a .cmd and .sh script must be provided to setup the infrastructure and another to tear it down;
  5. Samples should not ship with a full blown nuke build system - that's overkill;
  6. All samples should reference a single Directory.Build.props file (it's already in this repository, don't add a new one) which will determine the version of Akka.NET, Akka.Hosting, ASP.NET, .NET Runtime, and Microsoft.Extensions.* used;
  7. The samples should be contained in their own solution files, rather than one giant one; and
  8. Samples should be coherently organized by folder.

Questions?

Please create a Github issue for any questions you might have.

Code License

All source code is licensed under the language of Apache 2.0. See LICENSE for more details.

Diagrams and Visuals

All of the visuals used to explain our samples are licensed under Creative Commons Attribution 4.0 International.

Creative Commons Attribution 4.0 International License

You are free to modify and use these diagrams in your own derivative works as long as you comply with the text of the Creative Commons Attribution 4.0 International license.

About Petabridge

Petabridge logo

Petabridge is a company dedicated to making it easier for .NET developers to build distributed applications.

Petabridge provides Akka.NET support, consulting, and training.


Copyright 2015 - 2024 Petabridge, LLC

akkadotnet-code-samples's People

Contributors

aaronontheweb avatar skotzko avatar dependabot[bot] avatar arkatufus avatar heynickc avatar seankilleen avatar goblinfactory avatar augustoproiete avatar m-wilczynski avatar softwaremike avatar robertlyson avatar tstojecki avatar wshirey avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.