轉:WCF服務開發與調用的完整樣本

來源:互聯網
上載者:User

標籤:blog   http   io   os   使用   ar   strong   檔案   資料   

轉:http://blog.csdn.net/fxhflower/article/details/7274925

WCF服務開發與調用的完整樣本

開發工具:VS2008

開發語言:C#

開發內容:簡單的許可權管理系統

第一步、建立WCF服務庫

點擊確定,將建立一個WCF 服務庫樣本程式,自動產生一個包括IService1.cs和Service1.cs兩個類檔案。我們可以直接對其修改開發我們的服務,但一般直接刪除。

第二步:開發實體類

在解決方案中,添加新類Module.cs

在類中要首先引入using System.Runtime.Serialization命名空間

實體類具體代碼如下:

namespace WcfServiceLib.model
{
    /// <summary>
    /// 模組實體
    /// </summary>
    [DataContract]
    class Module
    {
        [DataMember]
        public string ModuleNO;
        [DataMember]
        public string ModuleName;
    }
}

為使在WCF服務被調用過程中科被序列化,在實體類前加[DataContract]標籤,實體類每個成員前加[DataMember]標籤

第三步:建立WCF服務介面

WCF服務要對外提供服務,需要建立服務的介面,聲明對外服務的內容。

在解決方案中添加新的介面類imoduleservice.cs,然後引入名門空間using System.ServiceModel;

具體代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using WcfServiceLib.model;

namespace WcfServiceLib.iservice
{
    /// <summary>
    /// 介面類
    /// </summary>
    [ServiceContract]
    public interface imoduleservice
    {
        [OperationContract]
        void AddModules(Module book);

        [OperationContract]
        Module GetModuleByID(string id);

        [OperationContract]
        void RemoveModule(string id);

        [OperationContract]
        void ModuleUpdate(Module book);
    }
}

介面類前要加[ServiceContract]標籤,每個成員前要加[OperationContract]標籤,標籤的作用是保證外部調用可以訪問到該方法。

第四步:介面類的實現

實現第三步中聲明的介面類,只有這樣WCF服務才會正在提供服務。

在解決方案中添加介面實作類別moduleservice,引入名稱空間using System.ServiceModel;

具體代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WcfServiceLib.iservice;
using System.ServiceModel;
using WcfServiceLib.model;

namespace WcfServiceLib.service
{
    /// <summary>
    /// 介面類實現
    /// </summary>
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
    class moduleservice : imoduleservice
    {
        #region imoduleservice 成員
        List<Module> _Modules = new List<Module>();

        public void AddModules(Module m)
        {
            m.ModuleNO = Guid.NewGuid().ToString();
            _Modules.Add(m);
        }

        public Module GetModuleByID(string id)
        {
            Module m = _Modules.Find(p => p.ModuleNO == id);
            return m;
        }

        public void RemoveModule(string id)
        {
            Module m = _Modules.Find(p => p.ModuleNO == id);
            _Modules.Remove(m);
        }

        public void ModuleUpdate(Module module)
        {
            Module m = _Modules.Find(p => p.ModuleNO == module.ModuleNO);
            m.ModuleName = module.ModuleName;
        }

        #endregion
    }
}

到此為止,WCF服務的主體就開發完成了,那麼如何才可以讓調用者使用這個服務呢?我們就需要吧WCF服務註冊並發布一下。

第五步:WCF服務發布

在VS2008以上的版本中都提供了對WCF服務可視化註冊和發布的工具。

出現如下介面:

可以看到有兩個終結點,第一個是服務節點,第二個是中繼資料節點。由於我們是用VS內建的服務庫項目來建立的,設定檔中還沒有刪除這些資訊,所以第一個節點裡還保留著內建的服務資訊Iservice.下面我們把這個服務更改為我們上文編寫的服務的資訊。

單擊左側的“Services”-“Services.Service1”在右側的Name,彈出“服務類型瀏覽器”對話方塊,在此類型中我們找到此WCF服務項目編譯出來的dll檔案,雙擊它就可以出現此服務中的對外公布的服務,點擊選中它單擊確定。

然後,我們展開左側“Services”->“WcfServiceLib.service.moduleservice”->“Endpoints”,單擊第一個“Empty Name”,從右邊的“EmptyProperties”中的Contract中我們可以看到,這裡的Contract仍然用的是Services.IService1。按照上文的步驟在走一遍,找到DLL後確定。

最後關閉配置視窗,儲存。


到此為止,服務就開發並發布完成了。接下來我們將WCF進行託管後就可以使用了。WCF服務託管有三種方式,最常用的是IIS託管。我們看一下WCF服務是如何進行IIS託管的。

第六步:WCF服務IIS發布

1、在解決方案上右鍵添加網站,類型選擇WCF服務。

2、建立起來的新的WCF服務網站中在App_Code檔案中自動為我們產生兩個類檔案:IService.cs和Service.cs。這兩個檔案對我們來說沒有用,我們刪掉。

3、然後添加對WCF服務庫項目的引用。結果如下:

4、然後修改Service.svc檔案,代碼如下:

<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLib.service.moduleservice" %>

5、在web.config上右擊選擇“編輯WCF配置”。

關閉WCF編輯工具,儲存即完成了服務的發布配置。

6、在Service.svc上右擊,選擇“在瀏覽器中查看”,在IE中運行此服務。

7、在IIS中部署網站,建立虛擬目錄指向該網站。然後瀏覽介面如下。

到此,WCF服務在IIS中託管成功。接下來,我們看一下如何使用WCF服務。

第七步:WCF服務的使用

1、建立Asp.net應用程式

2、右鍵點擊“引用”--->加入服務參考

添加成功後,解決方案中檔案如下:

3、後台調用WCF服務,代碼如下:

   protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ServiceReference1.imoduleserviceClient c = new WCF_Cilent.ServiceReference1.imoduleserviceClient();
                c.AddModules(new WCF_Cilent.ServiceReference1.Module());

                if (c.GetAllModule().Length > 0)
                {
                    Response.Write(c.GetAllModule()[0].ModuleNO.ToString());
                    Response.End();
                }
            }
4、運行程式,出現如下調用結果,調用成功。

轉: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.