dotnet / orleans

Cloud Native application framework for .NET
https://docs.microsoft.com/dotnet/orleans
MIT License
10.07k stars 2.03k forks source link

Trouble with Tutorial Stand Alone Silo #672

Closed sudsy closed 8 years ago

sudsy commented 9 years ago

Hi There,

I think the sdk might be out of step with the tutorial, but being new to this framework I can't seem to solve the issue and need a bit of help.

I am trying to run the Stand Alone Silo in http://dotnet.github.io/orleans/Step-by-step-Tutorials/Running-in-a-Stand-alone-Silo

I have set my Grains Collection project to a startup project but the compiler complains that it is a class project.

I found someone having similar issues at http://stackoverflow.com/questions/29442748/orleans-grain-collection-template-in-vs-has-it-changed and so tried to reolve it by manually setting the location of the OrleansHost exe to the SDK folder. The only problem is that the sdk folder does not contain the OrleansHost exe.

I did manage to find OrleansHost.exe through a search and it seems to be bundled as a dependency of the silo project. I have tried adding the orleanshost as a dependency of my GrainController project but it doesn't seem to compile the required OrleansHost.exe file in the bin directory for me to execute.

I have also tried using OrleansHost from other folders with no luck either.

Could you point me in the right direction please?

sergeybykov commented 9 years ago

We are in the process of updating the docs after several steps became more straightforward in 1.0.9. Check out http://dotnet.github.io/orleans/Step-by-step-Tutorials/Minimal-Orleans-Application for the up to date steps.

sudsy commented 9 years ago

Thanks for that, I wonder if you might be able to help me with a bit of an architecture question.

I am wondering if Orleans is suitable for a scenario where a grain might be bound up in a couple intensive operation for several minutes.

sudsy commented 9 years ago

Sorry that should be cpu intensive not couple intensive.

gabikliot commented 9 years ago

Orleans is suitable for such scenarios, but you need to be careful in how you use Orleans in those cases. The CPU intensive operations should happen outside Orleans grain context (thread context that runs the grain code), on a thread pool threads for example. There are very easy ways to marshal back and forth between Orleans context and thread pool. The general rule is that you never want to block grain code running on Orleans thread for long. Take a look here for instruction on how to do that: http://dotnet.github.io/orleans/Advanced-Concepts/External-Tasks-and-Grains