![Orleans:构建高性能分布式Actor服务](https://wfqqreader-1252317822.image.myqcloud.com/cover/223/44175223/b_44175223.jpg)
上QQ阅读APP看书,第一时间看更新
2.2.2 Grain服务的调用
在Orleans应用程序内部,Orleans客户端或Grain实例是通过Grain实例的引用对象(Grain Reference)向特定Grain实例发起服务请求的。如图2-2所示,Grain引用对象作为远程Grain实例的本地代理对象,是处理调用方与Grain实例间的数据交互的系统组件,Grain引用对象仅存在于Orleans客户端或调用方Grain内部,并由服务调用方根据Grain服务接口及目标Grain标识在运行时动态创建。
![](https://epubservercos.yuewen.com/5DD5C6/23446275701391606/epubprivate/OEBPS/Images/19_02.jpg?sign=1739280777-2eBghZ4MWleY7xepWsVr6wvyxOiYxEA3-0-4dfd78c69547661a83f4625d7992ca42)
•图2-2 Grain实例与Grain的引用对象
开发人员可以通过IGrainFactory.GetGrain<T>方法分别在Grain实例和Orleans客户端应用服务内创建Grain实例的引用对象,以下代码展示了在应用程序中,Grain实例及Orleans客户端创建特定类型Grain实例引用对象,并通过Grain引用对象向远程Grain实例发起异步服务请求的过程:
![](https://epubservercos.yuewen.com/5DD5C6/23446275701391606/epubprivate/OEBPS/Images/19_03.jpg?sign=1739280777-VUwnppPkvaJ58tFlsbRj0fJA73zz4ZsT-0-92dc7bec80d72d808d65d360be73b19e)