MBrace

MBrace is a .NET open-source framework and runtime which introduces a novel programming model for performing large scale computations in public, private and hybrid cloud computing environments. MBrace is inspired by the programming paradigm of asynchronous workflows as introduced in the F# programming language while borrowing ideas from CloudHaskell and HdpH. MBrace is written entirely in F# and provides bindings for F# and C#.

Overview
MBrace is a programming model and framework powered by the .NET software stack that is suitable for distributed programming. Based on the F# programming language, it offers an expressive and integrated way of developing, deploying and debugging large-scale computations running in cloud environments. MBrace is capable of distributing arbitrary code and offers native access to the rich collection of tested libraries offered with the underlying .NET framework. MBrace draws heavy inspiration from the Haskell community, especially from the work on concurrency/parallelism and shares many similar ideas with the HdpH project. Its programming model is founded on the premise that monads, in a recursive higher-order language, offer a rich substrate for expressing many different kinds of algorithmic patterns (i.e.: MapReduce, streaming, iterative or incremental algorithms) which can be defined at the user level as libraries, without the need to change any underlying runtime infrastructure.

Distinguishing features
MBrace offers a series of unique features such as:


 * Bigger scope: MBrace provides a unified experience for authoring various kinds of algorithms. While other frameworks focus on more specific algorithms or patterns (e.g. MapReduce, actors). MBrace provides such algorithms as extensions (i.e.: the workflow library implementing MapReduce) which can be combined and tweaked by the users.
 * Centralized deployment, monitoring and debugging: MBrace provides a shell that can be used for centralized monitoring and deployment without the need of batch files, manual copying, etc.
 * Concise and succinct algorithm development: The code developed using MBrace is not cluttered by orchestration details which makes code maintenance and debugging less cumbersome while its programming model enables less experienced users to tackle with big data and HPC algorithms.