預設服務行為
這個預設範例 (英文) 示範如何進行服務行為設定。 這個範例以實作 ICalculator
服務合約的使用者入門為基礎。 這個範例會使用 ServiceBehaviorAttribute 和 OperationBehaviorAttribute 屬性明確地定義服務行為與作業行為。 您可以在組態檔中設定行為,也可以在程式碼中以命令方式設定 (如這個範例所示)。
在這個範例中,用戶端是主控台應用程式 (.exe),而服務則是由網際網路資訊服務 (IIS) 所裝載。
注意
此範例的安裝程序與建置指示位於本主題的結尾。
此服務類別會使用 ServiceBehaviorAttribute 和 OperationBehaviorAttribute 指定行為,如下列程式碼範例所示。 所有指定的值都是預設值。
[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.
若要安裝、建置及執行範例
若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循 Building the Windows Communication Foundation Samples中的指示。
若要在單一或多部電腦組態中執行此範例,請遵循執行 Windows Communication Foundation 範例中的指示進行。