C#提高webService介面調用的效能

來源:互聯網
上載者:User

標籤:des   cWeb   style   blog   io   ar   color   os   sp   

 public class WebServiceClient    {                private object agent;        private Type agentType;        private const string CODE_NAMESPACE = "EnterpriseServerBase.WebService.DynamicWebCalling";        public WebServiceClient()        {        }        public void ShowAllMethods()        {                           MethodInfo[] pme = agentType.GetMethods();                int i = 0;                while (i < pme.Length)                {                                        i++;                }                    }        public string GetOneMethod(string method)        {            MethodInfo pme = agentType.GetMethod(method);            return pme.ToString();        }                  /// <summary<          /// 建構函式          /// </summary<          /// <param name="url"<</param<          public void WebServiceInit(string url)        {            //擷取WSDL             WebClient wc = new WebClient();            Stream stream = wc.OpenRead(url + "?WSDL");            ServiceDescription sd = ServiceDescription.Read(stream);            ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();            sdi.AddServiceDescription(sd, "", "");            CodeNamespace cn = new CodeNamespace(CODE_NAMESPACE);            //產生用戶端代理類代碼            CodeCompileUnit ccu = new CodeCompileUnit();            ccu.Namespaces.Add(cn);            sdi.Import(cn, ccu);            CSharpCodeProvider icc = new CSharpCodeProvider();            //設定編譯參數            CompilerParameters cplist = new CompilerParameters();            cplist.GenerateExecutable = false;            cplist.GenerateInMemory = true;            cplist.ReferencedAssemblies.Add("System.dll");            cplist.ReferencedAssemblies.Add("System.XML.dll");            cplist.ReferencedAssemblies.Add("System.Web.Services.dll");            cplist.ReferencedAssemblies.Add("System.Data.dll");            //編譯代理類             CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);            if (true == cr.Errors.HasErrors)            {                System.Text.StringBuilder sb = new System.Text.StringBuilder();                foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)                {                    sb.Append(ce.ToString());                    sb.Append(System.Environment.NewLine);                }                throw new Exception(sb.ToString());            }            agentType = cr.CompiledAssembly.GetTypes()[0];              agent = Activator.CreateInstance(agentType);          }            ///<summary<          ///調用指定的方法          ///</summary<          ///<param name="methodName"<方法名,大小寫敏感</param<          ///<param name="args"<參數,按照參數順序賦值</param<          ///<returns<Web服務的傳回值</returns<          public object Invoke1(string methodName, params object[] args)          {            MethodInfo mi = agentType.GetMethod(methodName);            return this.Invoke2(mi, args);        }          ///<summary<          ///調用指定方法          ///</summary<          ///<param name="method"<方法資訊</param<          ///<param name="args"<參數,按照參數順序賦值</param<          ///<returns<Web服務的傳回值</returns<          public object Invoke2(MethodInfo method, params object[] args)          {              return method.Invoke(agent, args);          }          public object WebServiceCall(string Function, object[] paramValue)        {                        object actual = this.Invoke1(Function, paramValue);            return actual;        }    }

建立一個全域的WebServiceClient執行個體,在適合的時候進行初始化提供伺服器url,進行webService調用時不用重複請求url地址,速度上會有所提升

C#提高webService介面調用的效能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.