示例#1
0
        private async Task doExcuteService(ServiceRequest request, Delegate action, RpcServiceGreeter_Client.RpcServiceGreeterClient client)
        {
            var options = new CallOptions();

            request.TraceData.LogId = XContext.Current.LogId;
            var param = new RpcRequest();

            param.Data = string.Empty + request.ToJson();
            var responses = client.RpcStream(param, options);

            while (await responses.ResponseStream.MoveNext())
            {
                try
                {
                    var response = responses.ResponseStream.Current;
                    if (response == null)
                    {
                        continue;
                    }
                    if (string.IsNullOrWhiteSpace(response.Data))
                    {
                        continue;
                    }
                    var result = response.Data.ToObject <ServiceResponse>();

                    runMethod(action, request, result);
                }
                catch { }
            }
        }
示例#2
0
        /// <summary>
        /// 远程服务调用
        /// </summary>
        /// <param name="request"></param>
        /// <param name="client"></param>
        /// <returns></returns>
        private ServiceResponse rpcExcuteService(ServiceRequest request, RpcServiceGreeter_Client.RpcServiceGreeterClient client)
        {
            var options = new CallOptions();

            request.TraceData.LogId = XContext.Current.LogId;
            var param = new RpcRequest();

            param.Data = string.Empty + request.ToJson();
            var response = client.RpcService(param, options);
            var result   = response.Data.ToObject <ServiceResponse>();

            return(result);
        }
示例#3
0
        private async Task doExcuteService(ClientRegistData service, Channel channel, ServiceRequest request, Delegate action)
        {
            var handler    = new ServiceHandlerHelper(service);
            var rpcChannel = channel;

            if (rpcChannel == null)
            {
                rpcChannel = service.ServerChannel;
            }
            var client = new RpcServiceGreeter_Client.RpcServiceGreeterClient(rpcChannel);

            request = new RequestHelper().GetServiceRequest(service, request);
            request = handler.ClientRequest(request);
            await doExcuteService(request, action, client);
        }
示例#4
0
        /// <summary>
        /// 远程服务调用
        /// </summary>
        /// <param name="channel"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        private ServiceResponse doExcuteService(ClientRegistData service, Channel channel, ServiceRequest request)
        {
            var handler    = new ServiceHandlerHelper(service);
            var rpcChannel = channel;

            if (rpcChannel == null)
            {
                rpcChannel = service.ServerChannel;
            }
            var client = new RpcServiceGreeter_Client.RpcServiceGreeterClient(rpcChannel);

            request = new RequestHelper().GetServiceRequest(service, request);
            request = handler.ClientRequest(request);
            var result = excuteService(service, request, client);

            result = handler.ClientRespons(request, result);
            return(result);
        }
示例#5
0
 private ServiceResponse excuteService(ClientRegistData service, ServiceRequest request, RpcServiceGreeter_Client.RpcServiceGreeterClient client)
 {
     return(rpcExcuteService(request, client));
 }