GithubHelp home page GithubHelp logo

phatboyg / stact Goto Github PK

View Code? Open in Web Editor NEW
245.0 23.0 37.0 59.4 MB

An early actor framework for .NET, long since abandoned by me.

License: Apache License 2.0

Shell 0.02% Ruby 0.80% C# 97.78% CSS 0.03% ASP 0.27% JavaScript 1.10%

stact's Introduction

Stact - An actor library and framework for .NET

LICENSE

Apache 2.0 - see docs/legal (just LEGAL in the zip folder)

IMPORTANT

NOTE: If you are looking at the source - please run build.bat before opening the solution. It creates the SolutionVersion.cs file that is necessary for a successful build.

INFO

Overview

Developing concurrent applications requires an approach that departs from current software development methods, an approach that emphasizes concurrency and communication between autonomous system components. The actor model defines a system of software components called actors that interact with each other by exchanging messages (instead of calling methods on interfaces in an object-oriented design), producing a system in which data (instead of control) flows through components to meet the functional requirements of the system.

Stact is a library for building applications using the actor model in .NET. The main assembly, Stact.dll, is the actor library and includes everything needed to use the actor model in any type of application. There are also additional supporting frameworks, such as Stact.ServerFramework, that can be used to expose actors via sockets or HTTP, allowing services to be built using actors.

Stact has a number of using features, including:

  • Actors, both typed and anonymous
  • Fibers, a cooperative threading model
  • Channels, to support message passing between objects
  • Workflow, allowing complex state-driven protocols to be defined and executed

Getting started with Stact

Downloads

You can also download Stact from the build server at http://teamcity.codebetter.com.

Source

This is the best way to get to the bleeding edge of what we are doing.

  1. Clone the source down to your machine.
    git clone git://github.com/phatboyg/Stact.git
  2. Type cd Stact
  3. Type git config core.autocrlf false to set line endings to auto convert for this repository
  4. Type git status. You should not see any files to change.
  5. Run build.bat. NOTE: You must have git on the path (open a regular command line and type git).

REQUIREMENTS

  • .NET Framework 3.5/4.0

RELEASE NOTES

CREDITS

stact's People

Contributors

drusellers avatar ferventcoder avatar phatboyg avatar travisthetechie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stact's Issues

Timeout is specified in TimeSpan, but doesn't tolerate all input in domain

public static bool SendRequestWaitForResponse<TRequest>(this UntypedChannel channel, TimeSpan timeout) 
in class ExtensionsForChannels

If I pass TimeSpan.MaxValue to this method, I get the exception:

System.ArgumentOutOfRangeException was unhandled by user code
  Message=Number must be either non-negative and less than or equal to Int32.MaxValue or -1.
Parameter name: timeout
  Source=mscorlib
  ParamName=timeout
  StackTrace:
       at System.Threading.WaitHandle.WaitOne(TimeSpan timeout, Boolean exitContext)
       at Stact.ExtensionsForChannels.SendRequestWaitForResponse[TRequest](UntypedChannel channel, TimeSpan timeout) in d:\BuildAgent-02\work\115708377bf4f2b8\src\Stact\Channels\ExtensionsForChannels.cs:line 92
       at ReceiverSpike.contexts.finicky_consumer_context.with_filter(Action`1 action) in D:\code\throw-away\ReceiverSpike\ReceiverSpike\contexts\finicky_consumer_context.cs:line 59
       at ReceiverSpike.when_inserting_multiple_events_they_are_filtered_spec.<.ctor>b__0() in D:\code\throw-away\ReceiverSpike\ReceiverSpike\filter_specifications.cs:line 62
       at Machine.Specifications.Utility.RandomExtensionMethods.<InvokeAll>b__3(Action x)
       at Machine.Specifications.Utility.RandomExtensionMethods.Each[T](IEnumerable`1 enumerable, Action`1 action)
       at Machine.Specifications.Utility.RandomExtensionMethods.InvokeAll(IEnumerable`1 actions)
       at Machine.Specifications.Utility.RandomExtensionMethods.InvokeAll(IEnumerable`1 becauseActions)
       at Machine.Specifications.Model.Context.EstablishContext()
  InnerException: 

And yet I am passing a value that is completely valid according to the API...

How can I be sure to wait indefinitely for an actor without doing something like this?

Nuget dependency to log4net

Hello, current nuget package (v1.1.0) has dependency to log4net library. At the same time it looks like nothing(neither Stact nor Magnum) actually uses it. May be it is better to remove this dependency at all?

This will also help people that uses other log libraries and do not want to introduce another lib to the project.

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.