跳到主要内容
版本:1.3.9

调用上下文

一、说明

RPC服务是无状态的,即只知道当前服务被调用,但无法得知是被谁调用,这个问题给日志记录、RPC回调等带来了很多麻烦事。但是,Touch的Rpc支持调用上下文获取。在上下文中可以获得调用者(ICaller)信息等。

二、通过标签参数获取

步骤:

  1. Rpc标签需要传入MethodFlags.IncludeCallContext参数。
  2. 定义的服务的第一个参数必须是ICallContext或其派生类。
  3. 最后获得其Caller属性即可得到调用者。
public class MyRpcServer : RpcServer
{
[Description("登录")]
[TouchRpc(MethodFlags = MethodFlags.IncludeCallContext)]//使用调用上才文
public bool Login(ICallContext callContext,string account,string password)
{
if (callContext.Caller is TcpTouchRpcSocketClient)
{
Console.WriteLine("TcpTouchRpc请求");
}
if (account=="123"&&password=="abc")
{
return true;
}

return false;
}
}

三、通过瞬时生命周期获取

步骤:

  1. 继承TransientRpcServer或者实现ITransientRpcServer接口。
public class MyRpcServer : TransientRpcServer
{
[Description("登录")]
[TouchRpc]
public bool Login(string account,string password)
{
if ( this.CallContext.Caller is TcpTouchRpcSocketClient)
{
Console.WriteLine("TcpTouchRpc请求");
}
if (account=="123"&&password=="abc")
{
return true;
}

return false;
}
}