標籤: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服務開發與調用的完整樣本