Skip to content

agents-net/agents.net

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License NuGet Workflow


Logo

Agents.Net

.NET class library to easily build self-organizing agents based systems!
Explore the docs »

Report Bug · Request Feature · Ask a Question

Table of Contents

About The Project

Agents.Net Intro

As I read about event sourcing and microservices I thought that these ideas are maybe not only viable for large distributed systems but also for your everyday console or UI application. This was when I started the Agents.Net framework. Agent based programming is more of an academic topic, but fits the ideas the best. The idea is to have a framework which

  • logs perfectly all necessary events to see what happens without debugging
  • self-organizes all active parts (agents) so that their needs are met
  • timely decouples all agents so that sending an information (message) does not block the sending agent
  • executes all work that can be parallelized in parallel

Here's why:

  • Your time should be focused on writing the logic without spending all your time thinking about who is talking to whom and how to optimize the performance.
  • You should not be bothered with difficult mechanisms to make your UI responsive.
  • You should be able to easily find an issue in your application just by looking at the log without the need for time consuming debugging and reproducing the defect.

The basic idea of the framework is this. Each agent does one thing (connects to a database, reads console input, verifies some values, ...). For that it needs specific information (location of the database, the raw console input, ...). Additionally it provides all the information it knows (the active database connection, single console arguments and their values, ...). The agent is not concerned where the information comes from or how if any needs the information provided. Based on that idea alone the system will organize all agents automatically simply based on who needs a specific information which was provided.

A list of commonly used resources that are helpful are listed in the acknowledgements.

Built With

Getting Started

To get a local copy up and running follow these simple example steps.

Prerequisites

sudo apt-get install -y dotnet-sdk-5.0

Installation

To use the current release simply add it via NuGet:

dotnet add package Agents.Net

To use to latest version from master you can either compile it yourself or use the latest NuGet package from github:

  1. Authenticating to github packages for this repository
  2. Add package via NuGet
nuget install Agents.Net -prerelease

Compilation

Compile using .NET Core

dotnet build src

Run tests

Test using .NET Core

dotnet test src

Run benchmarks

Run benchmarks using .NET Core

dotnet run -c Release -p src/Agents.Net.Benchmarks/Agents.Net.Benchmarks.csproj

Usage

Please have a look at our extensive Getting Started Guide. For Further inspiration on how to use the framework have a look at our BDD-styled Use Case Tests.

Roadmap

See the open issues for a list of proposed features (and known issues).

Versioning

The versioning is straight forward. We intend to make one release every half year. Releases will be versioned YEAR.[0|6].PATCH. So for the mid-year release of 2020 it is 2020.6.0. Patches will only be released for major issues. There will always be pre-releases for each commit to master as a github package.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated. Please read the contribution guideline before contributing.

In a nutshell:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Authors

  • Tobias Wilker - Initial idea and implementation - twilker

See also the list of contributors who participated in this project.

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Mail List - agents-net@googlegroups.com

Project Link: https://github.com/agents-net/agents.net

Acknowledgements