public static async void InvokeAsync(string serviceName, DTObject identity, DTObject arg, Action <DTObject> success, Action <Exception> error = null) { ServiceRequest request = new ServiceRequest(serviceName, identity, arg); try { var response = await SendAsync(request); var result = response.ReturnValue; if (success != null) { success(result); } } catch (Exception ex) { if (error != null) { error(ex); } } }
public DTObject Process(string method, DTObject arg) { DTObject returnValue = null; DTObject status = null; try { var request = ServiceRequest.Create(arg); InitIdentity(request); returnValue = ProcessService(request); status = ServiceHostUtil.Success; } catch (Exception ex) { LogWrapper.Default.Fatal(ex); status = ServiceHostUtil.CreateFailed(ex); } var reponse = DTObject.CreateReusable(); reponse["status"] = status; reponse["returnValue"] = returnValue; return(reponse); }
public virtual DTObject Invoke(ServiceRequest request) { return(Invoke(request.Argument)); }
public virtual IServiceProvider Create(ServiceRequest request) { return(ServiceAttribute.GetService(request.FullName)); }
private string GetAddressByDirect(ServiceRequest request) { return(_direct.GetAddress(request.FullName)); }
/// <summary> /// 获取提供服务的远程地址 /// </summary> /// <param name="request"></param> /// <returns></returns> public string GetAddress(ServiceRequest request) { return(GetAddressByDirect(request) ?? GetAddressByRoute(request)); }
public ServiceResponse Invoke(ServiceRequest request) { var address = GetAddress(request); return(Invoke(request, address)); }
/// <summary> /// 异步调用服务 /// </summary> /// <param name="address"></param> /// <param name="request"></param> /// <returns></returns> internal static Task <ServiceResponse> InvokeAsync(ServiceRequest request, string address) { return(Implement.InvokeAsync(request, address)); }
/// <summary> /// 调用服务 /// </summary> /// <param name="address"></param> /// <param name="request"></param> /// <returns></returns> internal static ServiceResponse Invoke(ServiceRequest request, string address) { return(Implement.Invoke(request, address)); }
private DTObject ProcessService(ServiceRequest request) { var provider = ServiceProviderFactory.Create(request); return(provider.Invoke(request)); }
private void InitContext(HttpContext context, ServiceRequest request) { WebServiceHost.Current = this; Identity = request.Identity; }
public static IServiceProvider Create(ServiceRequest request) { return(Factory.Create(request)); }
/// <summary> /// 调用服务 /// </summary> /// <param name="address"></param> /// <param name="request"></param> /// <returns></returns> internal static ServiceResponse Invoke(ServiceRequest request) { return(Implement.Invoke(request)); }
private void InitIdentity(ServiceRequest request) { AppSession.Identity = request.Identity; }
private static ServiceResponse Send(ServiceRequest request) { var address = GetAddress(request); return(Send(request, address)); }