默認範例示範如何設定服務行為設定。 此範例是以實作服務合約的 ICalculator
為基礎。 此範例會使用 ServiceBehaviorAttribute 和 OperationBehaviorAttribute 屬性明確定義服務行為和作業行為。 您可以在組態檔中設定行為,或在程序代碼中以命令方式設定行為(如此範例所示)。
在此範例中,用戶端是控制台應用程式(.exe),而服務是由 Internet Information Services (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.