- Orleans:構建高性能分布式Actor服務
- 吳哲昊編著
- 7字
- 2022-06-17 16:15:45
2.2 Grain的服務模型
2.2.1 服務接口與實現
在Actor模型中,每個Actor實例通過服務接口對外發布功能,因此在Orleans內實現Grain服務時,開發人員應當首先定義每個Grain類型所提供的服務接口,以此作為服務調用過程中Grain實例與調用方間的服務契約(Service Contract)。
在Orleans內的所有Grain服務接口方法都為異步方法,這是由于Orleans運行時是通過異步消息傳遞的方式實現對Grain實例的服務調用的。因此,Grain服務接口中所有方式的返回值類型都應被聲明為Task(對應同步場景下的無返回值函數)或Task<T> /ValueTask<T>(對應同步場景下返回值類型為T的函數)。以下代碼為一個Grain服務接口的聲明示例:

Grain服務接口的實現邏輯通常被定義在Grain類型內,開發人員可以使用async/await關鍵字對服務流程中異步邏輯的實現進行簡化。例如,以下代碼在EchoTalkerGrain類型中實現了ITalker服務接口的處理邏輯:

