預設服務行為

這個預設範例 (英文) 示範如何進行服務行為設定。 這個範例以實作 ICalculator 服務合約的使用者入門為基礎。 這個範例會使用 ServiceBehaviorAttributeOperationBehaviorAttribute 屬性明確地定義服務行為與作業行為。 您可以在組態檔中設定行為,也可以在程式碼中以命令方式設定 (如這個範例所示)。

在這個範例中,用戶端是主控台應用程式 (.exe),而服務則是由網際網路資訊服務 (IIS) 所裝載。

注意

此範例的安裝程序與建置指示位於本主題的結尾。

此服務類別會使用 ServiceBehaviorAttributeOperationBehaviorAttribute 指定行為,如下列程式碼範例所示。 所有指定的值都是預設值。

[ServiceBehavior(
    AutomaticSessionShutdown=true,
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,
    IncludeExceptionDetailInFaults=false,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
    [OperationBehavior(
        TransactionAutoComplete=true,
        TransactionScopeRequired=false,
        Impersonation=ImpersonationOption.NotAllowed)]
    public double Add(double n1, double n2)
    {
        System.Threading.Thread.Sleep(1600);
        return n1 + n2;
    }
    ...
}

服務行為是以 ServiceBehaviorAttribute 屬性指定。 下表會介紹其中一些行為。

服務行為 描述
AutomaticSessionShutdown 在用戶端要求時自動關閉工作階段。
ConcurrencyMode 指定每個服務執行個體的並行模式。
InstanceContextMode 指定執行個體內容模式。
UseSynchronizationContext 判定是否要使用所提供的同步化內容,如果有設定的話。 當您想要控制是否要在 Windows Forms 應用程式中使用 WindowsFormsSynchronizationContext 時,便可使用這項功能。
IncludeExceptionDetailInFaults 判定一般未處理的執行例外狀況是否要轉換為 Fault<string>,並且當作錯誤訊息傳送。
TransactionIsolationLevel 指定交易的隔離等級。
ValidateMustUnderstand 判斷未預期的訊息標頭是否會造成錯誤狀況。

作業行為是以 OperationBehaviorAttribute 屬性所指定。 下表會介紹其中一些行為。

作業行為 描述
TransactionAutoComplete 判定服務作業完成是否會認可目前異動。
TransactionScopeRequired 判定服務作業是否會登記在用戶端流動的異動中。
Impersonation 判定服務作業是否會模擬呼叫者身分識別。
ReleaseInstanceMode 判定服務執行個體是否會在服務作業呼叫的開始與結束時回收。

當您執行範例時,作業要求和回應會顯示在用戶端主控台視窗中。 呼叫之間發生延遲是因為在服務作業中呼叫 System.Threading.Thread.Sleep()。 其他行為範例會更詳細說明這些行為。 在用戶端視窗中按下 ENTER 鍵,即可關閉用戶端。

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

若要安裝、建置及執行範例

  1. 確定您已執行 Windows Communication Foundation 範例的一次性安裝程序

  2. 若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循 Building the Windows Communication Foundation Samples中的指示。

  3. 若要在單一或多部電腦組態中執行此範例,請遵循執行 Windows Communication Foundation 範例中的指示進行。