ASP.NET調用WCF服務
ASP.NET調用WCF服務
現在我們來看一下分析從一個客戶端ASP.NET頁面中的<script>節中來使用此WFC服務呢?其實,從頁面開發者角度來看,調用WCF服務的操作步驟與調用一個Web服務所要求的步驟沒有太大的區別。
第一步是使用ASP.NET AJAX框架的腳本管理器控件ScriptManager中的SVC端點注冊所要引用的WFC服務,如下所示:
- <asp:ScriptManager ID="ScriptManager1" runat="server">
- <Services>
- <asp:ServiceReference Path="~/TimeService.svc" />
- </Services>
- </asp:ScriptManager>
當處理上面的標記時,ScriptManager控件將觸發器額外的請求用以生成和下載指定的WCF服務的JavaScript代理類。然后,客戶端頁面將使用這個代理類實現相應的調用。
注意到,代理類的名字是根據WCF服務的命名空間進行命名的,具體是由ServiceContract屬性的Namespace參數進行聲明的。如果你保留此參數為其缺省值(即 Tempuri.org),那么該代理類的名字為Tempuri.org.TimeService。
第二步,我們使用下列JavaScript來調用前面WCF服務中定義的方法GetTimeFormat:
- <script language="javascript" type="text/javascript">...
- function getTime()
- ...{
- Samples.Services.TimeService.GetTimeFormat(
- "dd-mm-yyyy [hh:mm:ss]", onMethodCompleted);
- }
- function onMethodCompleted(results)
- ...{
- $get("lblCurrentTime").innerText = results;
- }
- </script>
- …………
- </head>
- <body>
- <form id="form1" runat="server">
- <asp:ScriptManager ID="ScriptManager1" runat="server">
- <Services>
- <asp:ServiceReference Path="~/TimeService.svc" />
- </Services>
- </asp:ScriptManager>
- <div class="style3"
- style="border-style: double; border-color: #008000; ">
- <span class="style1">在</span><span class="style1" lang="EN-US">
ASP.NET 3.5 AJAX</span><span- class="style1">開發中調用</span><span class="style1" lang="EN-US">
WCF</span><span- class="style1">服務<br />
- </span>
- </div>
- </form>
- <input id="Button1" type="button" value="取得當前服務器端時間"
onclick="getTime()" />- <div id="lblCurrentTime">
- </div>
- </body>
這里JavaScript代理類是由靜態方法組成的,它們的名字和語法聲明與WCF服務端點的原型是完全相匹配的。另外,類似于ASP.NET AJAX Web服務,每一個JavaScript代理方法也支持一組額外的參數,這是一組回調函數,用于處理調用過程中可能會出現的成功和失敗,在此不再贅述。
【編輯推薦】