Orleans: A Framework for Scalable Client+Cloud Computing
- Posted: Dec 02, 2010 at 3:07 PM
- 58,964 Views
- 10 Comments
Loading User Information from Channel 9
Something went wrong getting user information from Channel 9
Loading User Information from MSDN
Something went wrong getting user information from MSDN
Loading Visual Studio Achievements
Something went wrong getting the Visual Studio Achievements
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.
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.
Follow the Discussion
Oops, something didn't work.
What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in. You need to be signed in to Channel 9 to use this feature.What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in and view them all on your notifications page.sign up for email notifications?
Cool stuff.
Can't wait to see it "finished" and integrated with LINQ/Rx/"await".
actually the name 'AsyncValue<T>' looks more like the natural type name for async/await pattern than 'Task<T>', just a name though
@felix9: Let's not resort to name calling ... but would be more fun if they actually called it Promise<T>
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"
.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...
OK.
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.
@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.
I've been watching Orleans with great anticipation, since hearing about it at TechFest 2009. Thanks for publishing this video!
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
close