获取调用上下文
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;
}
}