示例#1
0
        void ImyService.ClientSendMessage(string methodName, string xmlParam, string callOperator, string certificate)
        {
            ConsoleMsg(AddMsgClient("用户调用ClientSendMessage,发送命令:" + methodName + " 用户:" + callOperator + "\r\n" + xmlParam, myTransport.ClientToService));
            //验证验证码
            if (certificate != LoadBalanceService.GetConfigValue("MyCheck"))
            {
                mCB.ServerSendMessage(methodName, mywrong("certificate is wrong!"));
                return;
            }
            try
            {
                XElement xmdata = XElement.Parse(xmlParam);
                string   fname  = xmdata.Element("Function").Value;
                string   fpath  = xmdata.Element("xmlPath").Value;
                string   fparam = xmdata.Element("Param").Value;
                switch (methodName)
                {
                case "CallBLL":
                    BllClass bc       = JsonConvert.DeserializeObject <BllClass>(fparam);
                    Assembly assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + bc.DLLName);
                    object   obj      = assembly.CreateInstance(bc.ClassName);
                    object   ret      = obj.GetType().InvokeMember(bc.Function, BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance, null, obj, new object[] { fparam });

                    byte[] bts = IoRyClass.StringToBytes(mycorrect(ret.ToString(), methodName));
                    System.ComponentModel.BackgroundWorker bw1 = new System.ComponentModel.BackgroundWorker();
                    bw1.DoWork += new System.ComponentModel.DoWorkEventHandler(Bytes_DoWork);
                    bw1.RunWorkerAsync(bts);

                    ConsoleMsg(AddMsgClient(mycorrect(ret.ToString(), methodName), myTransport.ServiceToClient));
                    break;

                default:
                    ConsoleErrorMsg(AddMsgClient("用户调用ClientSendMessage,发送命令:" + methodName + " 用户:" + callOperator + "\r\n" + xmlParam + "\r\n" + "Error报错:" + "服务不提供此方法!", myTransport.ServiceToClient));
                    mCB.ServerSendMessage(methodName, mywrong("服务不提供此方法!"));
                    break;
                }
            }
            catch (Exception me)
            {
                string exmsg = "";
                while (me.InnerException != null)
                {
                    exmsg += me.Message + "\r\n------>\r\n";
                    me     = me.InnerException;
                }
                exmsg += me.Message;
                ConsoleErrorMsg(AddMsgClient("用户调用ClientSendMessage,发送命令:" + methodName + " 用户:" + callOperator + "\r\n" + xmlParam + "\r\n" + "Error报错:" + exmsg, myTransport.ServiceToClient));
                mCB.ServerSendMessage(methodName, mywrong(exmsg));
            }
        }
示例#2
0
        string ImyService.SynMessage(string methodName, string xmlParam, string callOperator, string certificate)
        {
            ConsoleMsg(AddMsgClient("用户调用SynMessage,发送命令:" + methodName + " 用户:" + callOperator + "\r\n" + xmlParam, myTransport.ClientToService));
            //验证验证码
            if (certificate != LoadBalanceService.GetConfigValue("MyCheck"))
            {
                return(mywrong("certificate is wrong!"));
            }
            try
            {
                XElement xmdata      = XElement.Parse(xmlParam);
                string   XmlFunction = xmdata.Element("Function").Value;
                string   fpath       = xmdata.Element("xmlPath").Value;
                string   fparam      = xmdata.Element("Param").Value;
                switch (methodName)
                {
                case "GetServerStatus":
                    string msgxml = this.mycorrect(LoadBalanceService.CPULoad.ToString(), methodName);
                    ConsoleMsg(AddMsgClient(msgxml, myTransport.ServiceToClient));
                    return(msgxml);

                case "CallBLL":
                    BllClass bc       = JsonConvert.DeserializeObject <BllClass>(fparam);
                    Assembly assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + bc.DLLName);
                    object   obj      = assembly.CreateInstance(bc.ClassName);
                    object   ret      = obj.GetType().InvokeMember(bc.Function, BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance, null, obj, new object[] { fparam });
                    string   cbreturn = mycorrect(ret.ToString(), methodName);
                    ConsoleMsg(AddMsgClient(mycorrect(ret.ToString(), methodName), myTransport.ServiceToClient));
                    return(cbreturn);

                default:
                    ConsoleErrorMsg(AddMsgClient("用户调用SynMessage,发送命令:" + methodName + " 用户:" + callOperator + "\r\n" + xmlParam + "\r\n" + "Error报错:" + "服务不提供此方法!", myTransport.ServiceToClient));
                    return(mywrong("服务不提供此方法!"));
                }
            }
            catch (Exception me)
            {
                string exmsg = "";
                while (me.InnerException != null)
                {
                    exmsg += me.Message + "\r\n------>\r\n";
                    me     = me.InnerException;
                }
                exmsg += me.Message;
                ConsoleErrorMsg(AddMsgClient("用户调用SynMessage,发送命令:" + methodName + " 用户:" + callOperator + "\r\n" + xmlParam + "\r\n" + "Error报错:" + exmsg, myTransport.ServiceToClient));
                return(mywrong(exmsg));
            }
        }
示例#3
0
 static void KeepChecking(object sender, System.ComponentModel.DoWorkEventArgs e)
 {
     while (true)
     {
         PerformanceCounter pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total");
         pcCpuLoad.NextValue();
         Thread.Sleep(1000);
         float cpuLoad = pcCpuLoad.NextValue();
         //这里如果CPU使用率变化超过多少,主动通知所有客户端 cpuload的范围是0~100
         if (System.Math.Abs(LoadBalanceService.CPULoad - cpuLoad) > CPULevelNum)
         {
             //通知
             LoadBalanceService.SendtoAll("GetServerStatus", cpuLoad.ToString());
         }
         LoadBalanceService.CPULoad = cpuLoad;
     }
 }