
上QQ阅读APP看书,第一时间看更新
2.2.2 Grain服务的调用
在Orleans应用程序内部,Orleans客户端或Grain实例是通过Grain实例的引用对象(Grain Reference)向特定Grain实例发起服务请求的。如图2-2所示,Grain引用对象作为远程Grain实例的本地代理对象,是处理调用方与Grain实例间的数据交互的系统组件,Grain引用对象仅存在于Orleans客户端或调用方Grain内部,并由服务调用方根据Grain服务接口及目标Grain标识在运行时动态创建。

•图2-2 Grain实例与Grain的引用对象
开发人员可以通过IGrainFactory.GetGrain<T>方法分别在Grain实例和Orleans客户端应用服务内创建Grain实例的引用对象,以下代码展示了在应用程序中,Grain实例及Orleans客户端创建特定类型Grain实例引用对象,并通过Grain引用对象向远程Grain实例发起异步服务请求的过程:
