Пример #1
0
        /// <summary>
        /// 调用服务,并返回字符串
        /// </summary>
        /// <param name="name"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public string CallMethod(string name, string parameters)
        {
            if (callers.ContainsKey(name))
            {
                var caller  = callers[name];
                var message = new InvokeMessage
                {
                    ServiceName = caller.Service.FullName,
                    MethodName  = caller.Method.ToString(),
                    Parameters  = parameters
                };

                string thisKey  = string.Format("{0}${1}${2}", message.ServiceName, message.MethodName, message.Parameters);
                var    cacheKey = string.Format("HttpServiceCaller_{0}", IoCHelper.GetMD5String(thisKey));

                var invokeData = CacheHelper.Get <InvokeData>(cacheKey);
                if (invokeData == null)
                {
                    //获取当前调用者信息
                    var appCaller = new AppCaller
                    {
                        AppPath     = AppDomain.CurrentDomain.BaseDirectory,
                        AppName     = "HttpServer",
                        HostName    = DnsHelper.GetHostName(),
                        IPAddress   = DnsHelper.GetIPAddress(),
                        ServiceName = message.ServiceName,
                        MethodName  = message.MethodName,
                        Parameters  = message.Parameters,
                        CallTime    = DateTime.Now
                    };

                    //创建服务
                    var service = CreateService(appCaller);

                    //初始化上下文
                    SetOperationContext(appCaller);

                    try
                    {
                        //使用Invoke方式调用
                        var invoke = new InvokeCaller(appCaller.AppName, service);
                        invokeData = invoke.CallMethod(message);

                        //插入缓存
                        if (invokeData != null && caller.CacheTime > 0)
                        {
                            CacheHelper.Insert(cacheKey, invokeData, caller.CacheTime);
                        }
                    }
                    finally
                    {
                        //初始化上下文
                        OperationContext.Current = null;
                    }
                }

                //如果缓存不为null,则返回缓存数据
                if (invokeData != null)
                {
                    return(invokeData.Value);
                }
            }

            return("null");
        }
        /// <summary>
        /// 调用服务,并返回字符串
        /// </summary>
        /// <param name="name"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public string CallMethod(string name, string parameters)
        {
            if (callers.ContainsKey(name))
            {
                var caller = callers[name];
                var message = new InvokeMessage
                {
                    ServiceName = caller.Service.FullName,
                    MethodName = caller.Method.ToString(),
                    Parameters = parameters
                };

                string thisKey = string.Format("{0}${1}${2}", message.ServiceName, message.MethodName, message.Parameters);
                var cacheKey = string.Format("HttpServiceCaller_{0}", IoCHelper.GetMD5String(thisKey));

                var invokeData = CacheHelper.Get<InvokeData>(cacheKey);
                if (invokeData == null)
                {
                    //获取当前调用者信息
                    var appCaller = new AppCaller
                    {
                        AppPath = AppDomain.CurrentDomain.BaseDirectory,
                        AppName = "HttpServer",
                        HostName = DnsHelper.GetHostName(),
                        IPAddress = DnsHelper.GetIPAddress(),
                        ServiceName = message.ServiceName,
                        MethodName = message.MethodName,
                        Parameters = message.Parameters,
                        CallTime = DateTime.Now
                    };

                    //创建服务
                    var service = CreateService(appCaller);

                    //初始化上下文
                    SetOperationContext(appCaller);

                    try
                    {
                        //使用Invoke方式调用
                        var invoke = new InvokeCaller(appCaller.AppName, service);
                        invokeData = invoke.CallMethod(message);

                        //插入缓存
                        if (invokeData != null && caller.CacheTime > 0)
                        {
                            CacheHelper.Insert(cacheKey, invokeData, caller.CacheTime);
                        }
                    }
                    finally
                    {
                        //初始化上下文
                        OperationContext.Current = null;
                    }
                }

                //如果缓存不为null,则返回缓存数据
                if (invokeData != null)
                    return invokeData.Value;
            }

            return "null";
        }