Going Deep

Orleans: A Framework for Scalable Client+Cloud Computing

Download this episode

Download Video


Orleans is a Microsoft Research (MSR) project and managed (.NET) software framework for building client + cloud applications. As outlined in the recently released paper on the topic: Orleans defines an actor-like model of isolated grains that communicate through asynchronous messages and manage asynchronous computations with promises. The isolated state and constrained execution model of grains allows the Orleans runtime to persist, migrate, replicate, and reconcile grain state without programmer intervention. Orleans also provides lightweight, optimistic, distributed transactions that provide predictable consistency and failure handling for distributed operations across multiple grains.

Here, we meet the Orleans team—Sergey Bykov, Alan Geller, Gabriel Kliot, James Larus, Ravi Pandya, and Jorgen Thelin—as they introduce Orleans and provide insights into the rationale and design decisions behind the project and also spend a fair amount of time focusing on the basic unit of isolated computation in Orleans, the grain. Very interesting and promising research! 

I highly recommend that you read the paper—it's very approachable and makes many aspects of Orleans crystal clear. In fact, that's the goal of the Orleans project: to make reliable and scalable distributed concurrent computing easier for developers to compose using tools and concepts they already understand (.NET). As we all know, it's hard to effectively program scalable distributed concurrent systems reliably. Orleans's goal is to change this fact by exploring and implementing new approaches (like grain-based programming) using novel combinations of time-tested programming models and technologies (actors, promises, transactions, etc). 

Tune in. Enjoy.



Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • Kyrae

      Cool stuff. 

      Can't wait to see it "finished" and integrated with LINQ/Rx/"await".

    • felix9

      actually the name 'AsyncValue<T>' looks more like the natural type name for async/await pattern than 'Task<T>', just a name though Devil

    • Kyrae

      @felix9: Let's not resort to name calling ... but would be more fun if they actually called it Promise<T> Wink

      Also the distinction between AsyncCompletion and AsyncValue<T> seems not needed: could just use AsyncValue<Unit> for that. I think that getting someone in the team with more functional programming background would greatly help the project (this is in no way saying the project is bad). 

    • fwaris

      F# async{} workflow (monad) and MailboxProcessor<'T> do much of what is being described here - except for retry of messages.

      The F# workflow syntactic sugar makes writing async code almost like synchronous code.

    • rpandya

      @fwaris: We're working on switching over to the C# vNext [*] async pattern - we've been working on Orleans since long before it was available (even internally), so we had to implement our own version of promises. Once we switch, the F# async pattern will be very convenient, and F# would be a great programming language for writing grains. There's already another project in XCG that uses Orleans grains written in F#.

      [*] edited: I earlier called this .NET 4.5, but realized it's been called a variety of names, so I'll stick with Anders' "C# vNext"

    • felix9

      .NET 4.5 ..... oooh

    • Charles

      , felix9 wrote

      .NET 4.5 ..... oooh

      This was a typo, as Ravi specified (see his edit). The Async feature will be available in the next versions of C# and VB.NET. You can do the math in terms of the numeric expression for their versioning...

    • felix9

      OK. Smiley

      But .NET 3.5 introduced C# 3.0 and VB9, so the version of the framework and languages are not always in sync, ahh they should though, the 3.5 thing caused lots of confusion. Tongue Out

    • Mike​Christian

      @felix9: I never really understood why 3.5 was not named 3.1.  The smaller increment always made more sense to me, no matter the rationalization for the 3.5 jump.  I must simply be getting crotchety, well before my time. Devil

      I've been watching Orleans with great anticipation, since hearing about it at TechFest 2009.  Thanks for publishing this video!

    • jacob

      Good post and a fantastic read. You have raised some valid points. Great work, keep it up. I love returning back to this site and reading the quality content you always have on offer. It was wery useful for college paper.

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.