获取调用上下文

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

步骤:

  1. RPC标签需要传入MethodFlags.IncludeCallContext参数。
  2. 定义的服务的第一个参数必须是ICallContext或其派生类。
  3. 最后获得其Caller属性即可得到调用者。

    1. public class MyRpcServer : ServerProvider
    2. {
    3. [Description("登录")]
    4. [TouchRpc(MethodFlags = MethodFlags.IncludeCallContext)]//使用调用上才文
    5. public bool Login(ICallContext callContext,string account,string password)
    6. {
    7. if (callContext.Caller is TcpTouchRpcSocketClient)
    8. {
    9. Console.WriteLine("TcpTouchRpc请求");
    10. }
    11. else if (callContext.Caller is HttpTouchRpcSocketClient)
    12. {
    13. Console.WriteLine("HttpTouchRpc请求");
    14. }
    15. else if (callContext.Caller is UdpCaller)
    16. {
    17. Console.WriteLine("UdpTouchRpc请求");
    18. }
    19. if (account=="123"&&password=="abc")
    20. {
    21. return true;
    22. }
    23. return false;
    24. }
    25. }