無為

          無為則可為,無為則至深!

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
          Atlas給我們提供了一種非常簡單的方式去調(diào)用web service,大大的簡化了我們開發(fā)的復(fù)雜性。在Atlas中標(biāo)準(zhǔn)的調(diào)用web service方法是在頁面中添加一個ScriptManager然后將所需的web service添加到Services Template下,如:

          <atlas:ScriptManagerID="scriptManager"runat="server"EnableScriptComponents="true"
          ???????
          <Services>
          ???????
          ????<atlas:ServiceReferencePath="~/atlas/samples/services/SimpleService.asmx"/>
          ???????
          </Services>
          ??? </
          atlas:ScriptManager>

          ??? 這樣我們就可以通過如下javascript方法調(diào)用到遠程的web service

          ?? requestSimpleService = Quickstart.Samples.SimpleService.EchoString(
          ??????????? document.getElementById('inputName').value,?????? //params
          ???????????
          OnComplete,???? //Complete event
          ???????????
          OnTimeout?????? //Timeout event
          ???????????
          );

          這個例子可以在atlas doc工程中找到,非常簡單。然而,當(dāng)我們需要在頁面加載的時候調(diào)用web service的時候,就可能會遇到一定的麻煩了。在atlas doc的示例中也有這個例子,它是通過atlas 擴展的xml-script 客戶端開發(fā)模式來調(diào)用,即如下代碼:

          <scripttype="text/xml-script">
          ???????
          <page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
          ????????? <components>
          ??????????? <application id="application" load="OnApplicationLoad" />
          ????????? </components>
          ??????? </page>
          ??? </script>

          這樣我們就可以寫一個名為OnApplicationLoadjavascript函數(shù),在函數(shù)中去調(diào)用web service,同樣非常方便。但是,當(dāng)我們想用頁面的ClientScript.RegisterStartupScript方法給頁面添加一個加載時自動調(diào)用web service的時候,那麻煩就來了,它會提示你,要調(diào)用的web service類型未定義。在保證目標(biāo)web service存在,ServiceReference引用也添加進來的情況下,為什么會出現(xiàn)這樣的錯誤呢?一種可能是web service還沒有被注冊。因為我們用RegisterStartupScript注冊javacript的,那么是不是這里注冊的代碼在atlas客戶端代碼前執(zhí)行的?沒錯,問題就出在這里。用Fiddler調(diào)試頁面請求的過程可以看到有這樣一個請求atlas/atlas/samples/services/SimpleService.asmx/js,它返回的代碼如下:

          Type.registerNamespace('Quickstart.Samples');

          Quickstart.Samples.SimpleService=new function() {

          this.path = "http://localhost:2236/atlas/atlas/samples/services/SimpleService.asmx";

          this.appPath = "http://localhost:2236/atlas/";

          var cm=Sys.Net.ServiceMethod.createProxyMethod;

          cm(this,"EchoString","s");

          }

          可以看出,這段代碼就是atlas自動幫我們注冊了web service的引用類型,沒有這段類型定義,客戶根本就沒有我們



          凡是有該標(biāo)志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
          、轉(zhuǎn)載請注明來處和原文作者。非常感謝。

          posted on 2006-06-10 12:46 草兒 閱讀(291) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 萨迦县| 咸阳市| 江口县| 锦屏县| 施秉县| 新昌县| 延川县| 龙口市| 永川市| 汪清县| 缙云县| 竹山县| 汝城县| 钦州市| 汕头市| 垦利县| 永嘉县| 阳曲县| 农安县| 饶阳县| 屏东市| 荥经县| 桐庐县| 鲜城| 云阳县| 芦溪县| 邢台县| 临高县| 天津市| 西峡县| 河津市| 英山县| 前郭尔| 金寨县| 白朗县| 祁连县| 苗栗县| 黑山县| 通辽市| 双辽市| 康平县|