获取调用上下文
RPC服务是无状态的,即只知道当前服务被调用,但无法得知是被谁调用,这个问题给日志记录、RPC回调等带来了很多麻烦事。但是,RRQM的RPC支持调用上下文获取。在上下文中可以获得调用者(
ICaller)信息等。
步骤:
- RPC标签需要传入
MethodFlags.IncludeCallContext参数。 - 定义的服务的第一个参数必须是
ICallContext或其派生类。 最后获得其Caller属性即可得到调用者。
public class MyRpcServer : ServerProvider{[Description("登录")][TouchRpc(MethodFlags = MethodFlags.IncludeCallContext)]//使用调用上才文public bool Login(ICallContext callContext,string account,string password){if (callContext.Caller is TcpTouchRpcSocketClient){Console.WriteLine("TcpTouchRpc请求");}else if (callContext.Caller is HttpTouchRpcSocketClient){Console.WriteLine("HttpTouchRpc请求");}else if (callContext.Caller is UdpCaller){Console.WriteLine("UdpTouchRpc请求");}if (account=="123"&&password=="abc"){return true;}return false;}}
