fast and scalable service library

About

Footloose is a fast and scalable asynchronous distributed computing and service library that was designed to be secure, simple to use, unobtrusive and without the need of client side code generation or proxy classes.

It was developed to connect or build distributed applications on the .NET/Mono platform with enterprise features like load-balancing, clustering, encryption, service discovery and single-sign on.

Footloose enables you to easily transmit any kind of data between the components of your application over thread-, process- or physical boundaries. Depending on your needs Footloose uses one if its transport channels, e.g. a Named Pipe or a Unix Socket for Inter Process Communication (IPC), AMQP with one of the available Message Broker implementations (like RabbitMQ) in the local network or even XMPP as a secure and fast realtime messaging protocol that enables you to build cloud services. You can easily switch the transport channel at runtime of your application or simply use IPC for local communication and XMPP for remote components. The use of any different transport channel is totally transparent to your implementation.

The transport channel is responsible for authentication, transport security (encryption) and compression. Footloose on the other side provides you identity and request level authorization and exposes extensions points to implement your own authorization mechanism.

With the ability to share presence information between endpoint identities with availability and priority information Footloose enables you to implement load-balancing scenarios, to handle sudden connectivity loss with automatic failover or monitoring.

The feature to discover capabilities of an endpoint via service discovery enables Footloose to automaticly determine the best endpoint to send the request to. You can also query the capabilities dictionary for endpoints that are capable of your requirements. This enables you to find for example all endpoints that could handle a specific request and that are online and have a high priority.

Footloose provides you a variety of serializers for nearly every use case. For example a very fast Text/Json serializer for POCOs, a binary serializer for complex data types and even the default DataContractSerializers provided by the .NET/Mono Framework. You’re also able to easily implement your own serializer for your special needs.

Footloose does not require you to smell your code with special attributes like [OperationContract],using of special base classes or the generation of client proxy classes. It encourages you to use a model driven approach and to use your strongly-typed DTOs/POCOs.

Features of Footloose

easy to use, only a few lines of code to start with Footloose

Publish-Subscribe

Unobtrusive, no Attributes like [OperationContract] and no base class required