【ASP.NET 基礎】WCF入門教程一(什麼是WCF)?

來源:互聯網
上載者:User

標籤:system   邏輯   alt   應用程式   並集   soa   ica   好處   .sh   

一、概述

  Windows Communication Foundation(WCF)是由微軟發展的一組資料通訊的應用程式開發介面,可以翻譯為Windows通訊介面,它是.NET架構的一部分。由 .NET Framework 3.0 開始引入。

  WCF的最終目標是通過進程或不同的系統、通過本網或是通過Internet收發客戶和服務之間的訊息。

  WCF合并了Web服務、.net Remoting、訊息佇列和Enterprise Services的功能並整合在Visual Studio中。

  WCF專門用於面向服務開發。

二、基於Asp.net 的應用程式開發與面向服務開發

  在基於Asp.net 的應用程式開發中,我們由客戶機的瀏覽器訪問應用程式伺服器,然後通過應用程式伺服器中的資料庫連接去串連資料庫伺服器,讀取或是操作資料,有時候可能會多一個檔案伺服器。大家可以觀察到,基本上所有的應用都放在了一台伺服器上,但對於一個,由於業務上的需要(如:與外部系統互動),一台伺服器很難支援所有的應用。我們再看下面的圖:

  客戶機使用瀏覽器訪問伺服器A,伺服器A為了業務需要與其他各種應用部署在伺服器B、C、D....再通過WCF技術互相通訊,相互訪問...然而面向服務的好處不僅僅在此,他還提供了不同語言不同作業系統的可互動性..由於本文不是介紹SOA的文章,感興趣的同學可以參見:SOA

三、第一個WCF程式

  1. 建立立空白解決方案,並在解決方案中建立項目,項目類型為:WCF服務應用程式。建立完成後如所示:

  2.刪除系統產生的兩個檔案IService1.cs與Service1.svc。

  3.添加自訂的WCF【服務檔案】User.svc,此時vs2010會自動產生WCF介面檔案IUser.cs,我們在IUser中定義WCF方法ShowName,在User.svc.cs對該介面的方法進行實現。

代碼如下:

 1 using System.ServiceModel; 2  3 namespace WCFService 4 { 5     [ServiceContract] 6     public interface IUser 7     { 8         [OperationContract] 9         string ShowName(string name);10     }11 }12 13 14 namespace WCFService15 {16     public class User : IUser17     {18         public string ShowName(string name)19         {20             string wcfName = string.Format("WCF服務,顯示姓名:{0}", name);21             return wcfName;22         }23     }24 }

  大家可以看到,在WCF中的介面與普通介面的區別只在於兩個上下文,其他的和我們正常學習的介面一樣。定義這個上下文要添加System.ServiceModel的引用。

[ServiceContract],來說明介面是一個WCF的介面,如果不加的話,將不能被外部調用。

[OperationContract],來說明該方法是一個WCF介面的方法,不加的話同上。 

此時我們的第一個WCF服務程式就建立好了,將User.svc“設為起始頁”,然後F5運行一下試試,如所示,VS2010自動調用了WCF的用戶端測試載入器以便我們測試程式:

  我們雙擊中的 ShowName() 方法,出現如:

  在請求視窗中的值中輸入參數“你的姓名”,然後點擊“調用”,在響應視窗中會出現傳回值“WCF服務,顯示姓名:你的姓名”,說明測試成功,點擊下面的XML也可以看到XML的資料轉送。我們現在建立好了服務的應用程式和商務邏輯,即非常簡單的列印姓名的方法,測試也成功了。那麼我們怎麼用呢?

四、情境

  我們設計的情境是在生產中經常應用的情境,把WCF程式寄宿在IIS之上。假設情境如下:A伺服器和B伺服器。我們把我們剛剛建立的WCF程式“部署”在B伺服器上(本教程的A,B伺服器都放是我自己的一台機器),我們的目標是在A伺服器的應用程式來訪問B伺服器的WCF程式,實現伺服器端的應用程式通訊。

五、將WCF程式寄宿在B伺服器的IIS之上

  首先我們將WCF應用程式發布一下,然後部署在B伺服器的IIS之上,如所示:

 

  滑鼠右鍵瀏覽Uesr.svc,在遊覽器中出現如所示,說明服務部署成功。

   中的http://localhost/User.svc?wsdl即為我們要引用的服務地址。

六、在用戶端[A伺服器]建立服務的引用

  我們這裡以Web應用程式為例,建立地物理地址為本機,但是大家可以想像成B伺服器是遠端電腦,localhost為一個其他的IP地址。

  建立解決方案,並且建立ASP.NET Web應用程式的項目。命名為:WCFClient,如所示:

 

  (1)建立Asp.net頁面,命名為:WcfTest.aspx。

  (2)添加在第五步中部署的服務的引用。如所示:

  此時彈出加入服務參考的表單,如所示:

  我們在地址裡寫上我們寄宿在IIS上的WCF服務的地址服務路徑,此處為:http://localhost/User.svc?wsdl,在名稱空間處填寫WCFService[此名稱空間要在下面的用戶端中引用]然後點擊“前往”-->“確定”按鈕。此時我們完成了對服務的引用。我們再次查看解決方案,裡面多了Service References的檔案夾,通過資源管理員開啟后里面多了些檔案,這些檔案用於用戶端向服務端的調用,現在先不用管他。

 、使用WCF服務端的方法

  WcfTest.aspx的代碼如下:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WCFTest.aspx.cs" Inherits="WCFClient.WCFTest" %> 2  3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 <html xmlns="http://www.w3.org/1999/xhtml"> 5 <head runat="server"> 6     <title></title> 7 </head> 8 <body> 9     <form id="form1" runat="server">10     <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />11     <asp:Button ID="btnSubmit" runat="server" Text="測試WCF服務" OnClick="btnClick" />12     </form>13 </body>14 </html>15 16 using System;17 using System.Collections.Generic;18 using System.Linq;19 using System.Web;20 using System.Web.UI;21 using System.Web.UI.WebControls;22 23 //引用WCF服務的名稱空間24 using WCFClient.WCFService;25 26 namespace WCFClient27 {28     public partial class WCFTest : System.Web.UI.Page29     {30         protected void Page_Load(object sender, EventArgs e)31         {32 33         }34 35         protected void btnClick(object sender, EventArgs e)36         {37             UserClient user = new UserClient();38             string result = user.ShowName(this.txtName.Text);39             Response.Write(result);40         }41     }42 }

  上面中的UserClient類是在添加引用的時候產生的服務端User類的用戶端代理類,一般用戶端代理類名稱都會是**Client。我們運行一下看下效果。

  通過以上的例子,我們完成了由A伺服器的應用向B伺服器中WCF提供的方法的調用。這個例子比較簡單,對於經常開發B/S結構應用程式的同學們來說比較好理解。

八、說明:因為網上的入門教程比較少,本教程只做入門,後面會繼續講些其他入門的東西,深入的請看園子裡:Artech 大哥的文章。

九、代碼下載:

  10 WCF 教程

【ASP.NET 基礎】WCF入門教程一(什麼是WCF)?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.