Loading user information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading user information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Orleans: A Framework for Scalable Client+Cloud Computing

1 hour, 2 minutes, 56 seconds


Right click “Save as…”

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.


Follow the discussion

  • Oops, something didn't work.

    Getting subscription
    Subscribe to this conversation
  • Cool stuff. 

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

  • felix9felix9 the cat that walked by itself

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

  • @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). 

  • 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.

  • @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"

  • felix9felix9 the cat that walked by itself

    .NET 4.5 ..... oooh

  • CharlesCharles Welcome Change

    , 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...

  • felix9felix9 the cat that walked by itself

    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 ChristianMike​Christian Coding is magical, like Lucky Charms... except without the delightful ​marshmellow​s.

    @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!

  • jacobjacob

    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.

Remove this comment

Remove this thread


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.