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);
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
 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));
 }
示例#14
0
 private void InitIdentity(ServiceRequest request)
 {
     AppSession.Identity = request.Identity;
 }
        private static ServiceResponse Send(ServiceRequest request)
        {
            var address = GetAddress(request);

            return(Send(request, address));
        }