Skip to content

HSalaila/DistrEx

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DistrEx

A framework for creating distributed programs - without the headaches of synchronization, timeouts, and network communication.
BTW: It stands for Distributed Execution, in case you hadn't seen that coming ;)

What Does It Do?

DistrEx lets you write programs for distributed (multi-PC) setups easily.

Imagine a scenario where you have three machines (pc1, pc2, pc3) that you want to ask for the time simultaneously. DistrEx lets you do just with a single line of code:

Coordinator.Do(pc1.Do(GetTime), pc2.Do(GetTime), pc3.Do(GetTime)) //...

The result of this operation will be a Tuple<Time, Time, Time>, and it can be used in the next operation:

.ThenDo(pc1.Do(CompareTimes));

These parallel and sequential compositions can be combined/nested as required, and all execution paths are clearly visible as branches in the syntax tree. Besides, all inputs/arguments and outputs/results are neatly typed, so if at some point your syntax tree becomes a bit overhwelming, the compiler's type checker might help you figure out what's wrong.

How Does It Do It?

Under the hood of DistrEx you'll find a combination of WCF, Rx and Reflection.

  • WCF takes care of network communication,
  • Rx elegantly cures all kinds of concurrency headaches, and
  • Reflection is used for deploying and executing code on worker machines.

Besides using these mmain components, it was built for .NET 4.0.

Why Does It Exist?

This project is the practical component of my MSc Thesis Project. The intended use for DistrEx is to help design and execute automated acceptance tests for distributed (multi-pc) scenarios.

About

Framework for distributed execution

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%