<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      你是否覺得.Net Web Service 中asmx文件是多余的?---客戶端調用

      本文是《你是否覺得.Net Web Service 中asmx文件是多余的?》的繼續(xù)。主要討論Spring.Net發(fā)布的WebService基于接口發(fā)布調用問題。

       

      目錄

       

      •  .Net客戶端調用
      • Ajax調用

       

       

       

      1、.Net客戶端調用
      對于類似前一節(jié)中通過接口規(guī)范發(fā)布的服務,在.Net中可以通過松散的調用來完成。松散到什么程度呢?
      只需要兩個條件:1、WebService地址 2、服務接口程序集。
      調用過程如下:
      <objects xmlns="http://www.springframework.net" xmlns:aop="http://www.springframework.net/aop">
                  <object id="person" type="Spring.Web.Services.WebServiceProxyFactory,Spring.Services">
                      <!--地址-->
                      <property name="ServiceUri" value="http://localhost:53825/PersonService.asmx"></property>
                      <!--服務接口-->
                      <property name="ServiceInterface" value="SpringWebServiceIoCContract.IPerson, SpringWebServiceIoCContract"/>
                  </object>
                  <object id ="personObj" type="SpringWebServiceIoCContract.Person,SpringWebServiceIoCContract"></object></objects> 
      調用過程就比較簡單了:

          using (IApplicationContext context = ContextRegistry.GetContext())
                  {
                      var person0 = context.GetObject("person"as IPerson;
                      if (null!=person0)
                      {
                          Console.WriteLine(person0.Add(12));
                      }

         } 


      輸出:
      2、Ajax調用
      ajax的調用即顯得稍顯麻煩(可能是我還沒有發(fā)現(xiàn)最佳的調用方式),我這里只列出調用方式供參考
      之前調用傳統(tǒng)的WebService:
          $.ajax({
                  type: "POST",
                  url: "WebService1.asmx/GetPerson",
                  dataType: "json",
                  contentType: "application/json; charset=utf-8",
                  success: function (json) { $(json.d).each(function () { alert(this.Name + "-" + this.Age ) }) },
                  error: function (error) {
                      alert("調用出錯" + error.responseText);
                  }
              });
      success時,返回的數(shù)據(jù)就是json類型的。
      但如果通過Spring.Net發(fā)布的Web Service ,我們的配置文件中對httpModule以及HttpHandler的重新配置已經改變了客戶端請求WebService調用時的
      處理模塊了,如果在的配置如下:
              <httpHandlers>    

      <add verb="*" path="*.asmx" type="Spring.Web.Services.WebServiceHandlerFactory, Spring.Web"/>
              </httpHandlers>
              <httpModules>
                  <add name="SpringModule" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
              </httpModules>

      還通過這種 方式調用會產生問題,如下圖:
      好在Spring.Net中同時提供了Spring.Web.Extensions程序集,如果有HttpModule過濾后的模塊交給它處理就沒有問題。此時,我們的配置應該是:
              <httpHandlers>    

      <add verb="*" path="*.asmx" type="Spring.Web.Script.Services.ScriptHandlerFactory, Spring.Web.Extensions"/>
              </httpHandlers>
              <httpModules>
                  <add name="SpringModule" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
              </httpModules>

      這時,我們上述Ajax方式調用傳統(tǒng)的Web Service就沒有問題。
      提示:.Net客戶端(ConsoleApplication)調用也能成功。
      問題是,使用Spring.Web.Extensions,我們能調用Spring.Net發(fā)布的WebServicve 嗎。?
      我們將上述Ajax調用的url換成PersonService.asmx,如下:
                $.ajax({

          type: "POST",
                  url: "PersonService.asmx/GetPerson",
                  dataType: "json",
                  contentType: "application/json; charset=utf-8",
                  success: function (json) { $(json.d).each(function () { alert(this.Name + "-" + this.Age) }) },
                  error: function (error) {
                      alert("調用出錯" + error.responseText);
                  }
              });

      這時問題就出來了:

       

      從中我們可以看出:PersonService.asmx/GetPerson是能調用成功的,只是JSON轉換的時候出現(xiàn)異常。
      解決方式:
      將IPerson接口中的GetPerson返回string類型,通過JsonConvert.SerializeObject進行轉換,如下:
      public string GetPerson(string name)       

        {
                  Person person = new Person { Age = 25, Name = "zhangsan" };
                  return JsonConvert.SerializeObject(person);
              }

      Ajax調用:
             $.ajax({

          type: "POST",
                  url: "PersonService.asmx/GetPerson",
                  data: { name: 'a' },
                  dataType: "JSON",
                  success: function (json) {
                      alert(new Function("return " + json.replace(/<[^>]+>|[\r\n]/g, ""))().Name)
                  },            
                  error: function (error) {
                      alert("錯誤:" + error.responseText);
                  }
              });

      這樣就調用成功。
      看看下圖中和調用傳統(tǒng)WebService的區(qū)別:
      注意:傳統(tǒng)WebService調用,dataType: "json",而現(xiàn)在dataType: "JSON"。"JSON"大小寫區(qū)分.
      還有一種AJAX調用的方式:通過<scriptManager>來進行
      在如下配置:即

      <add verb="*" path="*.asmx" type="Spring.Web.Script.Services.ScriptHandlerFactory, Spring.Web.Extensions"/>可以通過

      PersonService.GetPerson(name, GetDataOnSucceeded);
      function GetDataOnSucceeded()
      {
          alert("姓名:" + result.Name + "\n" + "年齡:" + result.Age);    
      }
      調用結果如下:
      posted @ 2012-06-07 10:43  tyb1222  閱讀(2934)  評論(5)    收藏  舉報
      主站蜘蛛池模板: 日韩av一区二区三区精品| 国产天美传媒性色av高清| 国产一级三级三级在线视| 亚洲一区二区中文字幕| 国产精品一区二区三区91| 欧美巨大巨粗黑人性aaaaaa| 亚洲热线99精品视频| 乱码中字在线观看一二区| 久久精品国产99久久久古代 | 国产综合视频一区二区三区| 欧洲美熟女乱又伦免费视频| 亚洲成av人片在www鸭子| 性色av极品无码专区亚洲| 久久中精品中文字幕入口 | 精品人妻日韩中文字幕| 色综合色综合色综合久久| 国产成人无码A区在线观看视频| 亚洲自拍偷拍一区二区三区| 国产明星精品无码AV换脸| 日韩人妻无码精品久久| 国产视频 视频一区二区| 国产亚洲999精品AA片在线爽| 国产成人高清亚洲一区91| 麻豆成人传媒一区二区| 加勒比无码人妻东京热| 国产激情第一区二区三区| 久久99精品久久久久麻豆| 性欧美暴力猛交69hd| 亚洲精品日韩在线丰满| 欧美性猛交xxxx免费看| 高清有码国产一区二区| 国产精品成人中文字幕| 日韩精品一区二区三区不卡| 天天躁夜夜踩很很踩2022| 国产乱色熟女一二三四区| 视频二区国产精品职场同事 | 成人无号精品一区二区三区| 亚洲AV乱码毛片在线播放| 澳门永久av免费网站| 好男人官网资源在线观看| 久久夜色精品国产亚洲av|