WCF創建簡單程序


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

wcf

  2.刪除系統生成的兩個文件IService1.cs與Service1.svc,當然你也可以直接在這兩個自動生成的文件中編碼。

  3.添加自定義的WCF【服務文件】User.svc,此時vs2010會自動生成WCF接口文件IUser.cs,我們在IUser中定義WCF方法ShowName,在User.svc.cs對該接口的方法進行實現。代碼如下:

 

using System.ServiceModel;

namespace WCFService
{
    [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string ShowName(string name);
    }
}


namespace WCFService
{
    public class User : IUser
    {
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服務,顯示姓名:{0}", name);
            return wcfName;
        }
    }
}

 

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

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

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

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

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

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

我們可以在WCF測試客戶端窗口長看到WCF服務的地址:http://localhost:2059/User.svc

我們可以在其他項目中添加服務引用來添加WCF服務,當然也可以把WCF服務發布到IIS上,然后然別人去調用。

接下來我們就以發布到IIS為例:

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

 

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

   上圖中的http://localhost/User.svc?wsdl即為我們要引用的服務地址。因為我們的IIS是在同一台計算機上,所以是localhost

我們這里以Web應用程序為例。

  新建解決方案,並且創建ASP.NET Web應用程序的項目。命名為:WCFClient,如下圖所示:

 

 

 

 

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

 

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

 

wcf

 

  此時彈出添加服務引用的窗體,如下圖所示:

 

 

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

WcfTest.aspx.cs的代碼如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

//引用WCF服務的名稱空間
using WCFClient.WCFService;

namespace WCFClient
{
    public partial class WCFTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnClick(object sender, EventArgs e)
        {
            UserClient user = new UserClient();
            string result = user.ShowName(this.txtName.Text);
            Response.Write(result);
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM