Summary
In this chapter, we were introduced to some of the advanced concepts in Orleans. We learned about Orleans streams and implicit and explicit subscriptions to these streams. Using streams, we saw how our Distel application processes a stream of messages. We also learned how we can make a specific grain activated on a predefined silo using heterogeneous silos. If there is a need to scale grains independently, with heterogeneous silos, we can split our application into microservices where a node hosts only the defined grains, which makes them scale independently.
In this chapter, we also explored grain interface versioning and different strategies for selecting a versioned grain. We also looked into a few recommendations for choosing these strategies.
So far, we have learned about different concepts in Orleans. In the next chapter, let's learn about design patterns in Orleans, which represent the best practices used by experienced Orleans developers.