17 ms·
Microsoft Orleans – An approach to building distributed applications in .NET
- hitr 10y agoI did not know about this until I looked at the awsome-dotnet list[1] .This project is based on Microsoft research[2] and is heavily used internally and externally at Microsoft (Halo and Skype project). I think the Microsoft Azure Service Fabric is cloud version of the orleans might be originated from this framework(I may be wrong).I have done some sample applications and i think this is a good alternative to AKKA.NET [1]https://github.com/quozd/awesome-dotnet https://github.com/quozd/awesome-dotnet https://www.microsoft.com/en-us/research/project/orleans-virtual-actors/ https://www.microsoft.com/en-us/research/project/orleans-vir...
- deleted 10y ago[deleted]
- reubenbond 10y ago> I think the Microsoft Azure Service Fabric is cloud version of the orleans might be originated from this framework(I may be wrong) Service Fabric is a confusing beast. It includes a Virtual Actor runtime which is indeed very heavily inspired from Orleans, but it is a reimplementation. Orleans is built for "cloud" scenarios. You can run Orleans on top of Service Fabric using a host I wrote: https://github.com/OrleansContrib/OrleansFabricSilo https://github.com/OrleansContrib/OrleansFabricSilo
- refulgentis 10y ago"actors are called ‘grains’," If you can write a sentence "X are called Y", and X is more well-known, drop Y. "You can then send messages to the grain by creating a proxy object, and calling the methods: var grain = GrainClient.GrainFactory.GetGrain<IMyGrain>("grain1"); await grain.SayHello("World");" var brain = BrainClient.BrainFactory.GetBrain<IMyBrain>("brain1"); await brain.Say("WTF");
- KirinDave 10y agoI suspect the F# interface will not only be more to your liking, and probably be trivial to tie in with MBrace which is a pretty damn great library. All C#/Java style static typing code not only looks like that, but often calls it "best practice." Worth noting that "await" use is quite elegant in what it does here.
- itaysk 10y agoI think that because its a virtual actor with different characteristics that regular well known actors it might be a good idea to call or differently to avoid confusion.
- theprotocol 10y agoI share your sentiment. I'd been away from .NET/C# for a few years and came back to find that they dialed the abstraction level to 11. I adore C# as a language but I find myself increasingly alienated by its generally accepted coding style. I find that Microsoft's products have extremely unintuitive naming schemes at both a low level (language, standard libraries) and a high level (.NET product word salad naming schemes, Office 365 referring to a diverse and inconsistent range of products...). The skeptic in me thinks that this may be an attempt at educational lock-in. The lines between marketing and technology have definitely been blurred.
- m_mueller 10y agoSeems to me all big software houses are affected of this in their long standing products. You start a new thing and come up with a good name. 15 years with 17 product cycles down the line and you have a whole forest of names that have some relation to this thing. See also: iTunes (OSX), iTunes (iOS), "Music" (iOS), Apple Music, iTunes Match, Genius and the iCloud Music tab. Podcasts and videos are also all in there somewhere, know what dear user, you figure it out k?
- rdtsc 10y agoThey brought in very highly paid, smart engineers. Which have periodic performance reviews. If they don't we "we designed and implemnted X, Y, Z awesome new abstractions / features" everyone in the room bosses, employees, higher ups, marking it going to feel let down. So, we have ever more features. "Say, Steve, what have you been doing last year?" - "Welp, just making sure things work, fixed some bugs, documentation, took customer calls. The product essentially works, people love it". "Wait, so we haven't shipped any new features, hmm, ok...". vs the response of "We implemented fizz, bar, quux features. We tore down old zig and added zag instead. It is really the same as old zig, but now look green and re-written with latest framework we saw in HN headlines". "Oh great, you get a promotion and a raise". I am being a bit silly, but it is only half-joking, it is how software industry often works.
- markpapadakis 10y agoOrleans is just fantastic. 343 Industries famously used Orleans for Halo 4 backend services infrastructure. Caitie McCaffrey's presentation can be found here: https://www.infoq.com/presentations/halo-4-orleans https://www.infoq.com/presentations/halo-4-orleans You may be interested in Obit ( https://github.com/orbit/orbit https://github.com/orbit/orbit ). It is inspired and based on Orleans, except it's written in Java. Similar concepts and semantics. ( a BioWare project )
- mohdmasd 10y agoWhy not Akka/Akka.net? It looks more mature framework with bigger community and you can find much more resources about it.
- eropple 10y agoOrleans is a similar the same thing to Akka.NET, but its design goals are kind of reversed from Akka's in that it's designed first for non-expert users to build distributed systems. Akka gives you the whole toolbox, and you figure it out from there. Orleans is rather more opinionated and, while it has similar features and concepts to Akka, it has an easier "happy path" for building scalable systems using it. I'm not sure claims to Akka.NET's maturity hold water relative to Orleans. Akka proper has a lot of miles on it, but so does Orleans, and I'm not sure Akka.NET is as heavily tested and stressed as Orleans.
- brianwawok 10y agoCan non expert users actually build distributed systems? I mean they can start it, but will it actually give correct results and scale and handle concurrency concerns?
- eropple 10y agoI can't speak to it at Very Large Scales, but I've seen non-experts do pretty well with Akka when strong guardrails are put in place by seasoned developers. No reason to think that Orleans (which I've studied but not used heavily, though that might change with CoreCLR) couldn't pre-bake that a bit. I mean, eventually that sort of thing will fall down, but almost anything will.
- Rapzid 10y agoIt's been a couple years since the last time I looked at Orleans. I must say though that even in the early days the documentation was pretty good; it's even more impressive now.
- joostdevries 10y agoI myself am mostly aquainted with Akka for Scala. So I was wondering what different design decisions they made, if any. After all a second implementation of a framework is often better than the first. They do go into that in the research paper [1]. "Actor platforms such as Erlang [3] and Akka [2] are a step forward in simplifying distributed system programming. However, they still burden developers with many distributed system complexities because of the relatively low level of provided abstractions and system services. The key challenges are the need to manage the lifecycle of actors in the application code and deal with inherent distributed races, the responsibility to handl e failures and recovery of actors , the placement of actors, and thus distributed resource management. To build a correct solution to such problems in the application, the developer must be a distributed systems expert. To avoid these complexities, we built the Orleans programming model and runtime, which raises the level of the actor abstraction." It's an interesting question how hard it would be to offer such a often-good-enough option in Akka for the cases when you don't have the need or the time or the team to develop a custom distributed computing model. Edit: maybe Lagom is meant to fit that space. I think it's wider in scope than 'easy actors' though.
- joostdevries 10y agoFor posterity's sake: I just noticed this thorough comparison between Akka and Orleans from the Akka team. [1] https://github.com/akka/akka-meta/blob/master/ComparisonWithOrleans.md https://github.com/akka/akka-meta/blob/master/ComparisonWith...
- tangue 10y agoWhy this name ? As someone who has family in this town I'm wondering. Historical reasons ? Some character in a game I don't know about ? Random chosen french city ?
- IanDrake 10y agoFrench? Orleans is right down the street here in Massachusetts. ;) Still, the name makes searching for help and information difficult.
- reubenbond 10y agoBack when this was an internal MS project (and I was working there, on another team), I believe the icon for the Orleans (internal) nugets and the demo apps was the Mardi Gras flag, which suggests that it's named after New Orleans. I might be misremembering.
- UK-AL 10y agoWhats the difference between service fabric and this?
- nimish 10y agoService fabric is a different distributed runtime with its own complex semantics. Orleans is conceptually simpler, with (virtual) actors running on "silos"; it's much closer to erlang.
- AshkanSaeedi 10y agoService Fabric contains a virtual actor model based programming API called reliable actors. SF reliable actors are different from Orleans in many ways. The placement strategy in SF is based on consistant hashing and some Orleans features are not there. Other than that, it is a new member in SF family and is not as battle tested as Orleans. Orleans is open source and can be used inside SF as well and it's being involved rapidly. SF has other things like service life-cycle management, state replication and reliable collections to use which are replicated automatically so it's not something directly comparable to Orleans, currently using Orleans in SF can give you all Orleans goodness with additional SF features like service upgrade, rollback, reliable collections and ...
- jsingleton 10y agoI saw a talk about how this was used in Halo. Seems very impressive but I haven't had a project that needed this sort of scale since then. They are working on supporting .NET Core, which is promising: https://anclafs.com/#other https://anclafs.com/#other Shameless plug: I wrote about this in chapter ten of my recent book (https://www.packtpub.com/packtlib/book/Application%20Development/9781785881893/10 https://www.packtpub.com/packtlib/book/Application%20Develop...). You'll need to have bought it for that chapter, but the first one is free.
- jpalomaki 10y agoTalk from Build 2014: "Using Orleans to Build Halo 4’s Distributed Cloud Services in Azure" https://channel9.msdn.com/Events/Build/2014/3-641 https://channel9.msdn.com/Events/Build/2014/3-641
- 0xmohit 10y agoComparison of Orleans with Erlang and Riak Core: http://christophermeiklejohn.com/papers/2015/05/03/orleans.html http://christophermeiklejohn.com/papers/2015/05/03/orleans.h...
- revelation 10y agoWhat's up with the string identifiers? Don't break refactoring, that's just Java-esque.
- tpetricek 10y agoFor those interested in distributed, high-scale computing on .NET, I'd also recommend having a look at MBrace: http://mbrace.io/ http://mbrace.io/ MBrace supports F# and C# and is designed to work well in interactive scripting scenarios, which lets you develop scalable systems gradually using REPL. I think it is complementary to Orleans/Akka.Net, so it is worth knowing it exists!
- youdontknowtho 10y agoService Fabric is a system that came out of this research. It's in use now by some game companies and Microsoft uses it as the platform that they build their offerings for Azure on. https://azure.microsoft.com/en-us/services/service-fabric/ https://azure.microsoft.com/en-us/services/service-fabric/ It's really slick. Persistent distributed .Net collections. Actor model support. https://channel9.msdn.com/Events/Build/2015/3-618 https://channel9.msdn.com/Events/Build/2015/3-618 Service Fabric stuff starts at ~38 minutes in... https://channel9.msdn.com/Events/Build/2016/KEY02 https://channel9.msdn.com/Events/Build/2016/KEY02 Scott Hanslemann demos its use for a game called Age of Ascent? (Something like that.) In addition to being in production use in Azure for several years it also runs on Linux.
- agumonkey 10y agoI thought MS Nancy was firstname based, but I'm starting to wonder if they're revisiting "USofA oldest ally".
- deleted 10y ago[deleted]
- swalsh 10y agoWhy does Microsoft keep doing this, over and over again a technology becomes big, and Microsoft says "learning x is hard, we developed Y so you can do X without learning it". Which sounds good on the surface, but the trade off is 1. You can't leave the platform and reapply the concepts... you're stuck in Microsoft, but even more importantly 2. The process of abstracting away the thing you're trying to avoid learning means that you're probably doing it less efficiently.
- reubenbond 10y agoIn this case you can: Orbit (by Bioware/EA) for the JVM also implements the Virtual Actor model. Hopefully other frameworks will adopt the model, too. Orbit: https://github.com/orbit/orbit https://github.com/orbit/orbit
- jimmcslim 10y agoThe latest episode of Scott Hanselman's podcast covered Orleans in an interview with Richard Astbury. http://hanselminutes.com/536/exploring-the-orleans-distributed-virtual-actor-model-with-richard-astbury http://hanselminutes.com/536/exploring-the-orleans-distribut...