A szolgáltatás alapértelmezett viselkedése
Az alapértelmezett minta bemutatja, hogyan konfigurálhatók a szolgáltatás viselkedési beállításai. A minta a szolgáltatásszerződést megvalósító ICalculator
első lépéseken alapul. Ez a minta explicit módon határozza meg a szolgáltatás viselkedését és működési viselkedését az és OperationBehaviorAttribute az ServiceBehaviorAttribute attribútumok használatával. Konfigurálhat viselkedést konfigurációs fájlokban vagy kódban is (ahogy ez a példa is mutatja).
Ebben a mintában az ügyfél egy konzolalkalmazás (.exe), és a szolgáltatást az Internet Information Services (IIS) üzemelteti.
Feljegyzés
A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.
A szolgáltatásosztály az alábbi kódmintában látható módon határozza meg a ServiceBehaviorAttributeOperationBehaviorAttribute viselkedést. Minden megadott érték az alapértelmezett érték.
[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;
}
...
}
A szolgáltatás viselkedését az ServiceBehaviorAttribute attribútum határozza meg. Az alábbi táblázat néhány ilyen viselkedést ismertet.
Szolgáltatás viselkedése | Leírás |
---|---|
AutomaticSessionShutdown | Automatikusan leállítja a munkamenetet az ügyfél kérésére. |
ConcurrencyMode | Az egyes szolgáltatáspéldányok egyidejűségi módját adja meg. |
InstanceContextMode | A példány környezeti módját adja meg. |
UseSynchronizationContext | Meghatározza, hogy a megadott szinkronizálási környezetet használja-e, ha van beállítva. Ezt akkor használja, ha azt szeretné szabályozni, hogy windowsos űrlapokat használjon-e WindowsFormsSynchronizationContext . |
IncludeExceptionDetailInFaults | Meghatározza, hogy az általános nem kezelt végrehajtási kivételeket hibaüzenetként kell-e konvertálni Fault<string> és elküldeni. |
TransactionIsolationLevel | A tranzakciók elkülönítési szintjét adja meg. |
ValidateMustUnderstand | Meghatározza, hogy a váratlan üzenetfejlécek hibát okoznak-e. |
A műveleti viselkedések az attribútum használatával OperationBehaviorAttribute vannak megadva. Az alábbi táblázat néhány ilyen viselkedést ismertet.
Művelet viselkedése | Leírás |
---|---|
TransactionAutoComplete | Meghatározza, hogy a szolgáltatásművelet befejezése véglegesíti-e az aktuális tranzakciót. |
TransactionScopeRequired | Meghatározza, hogy a szolgáltatásművelet szerepel-e egy ügyfél által feldolgozott tranzakcióban. |
Impersonation | Meghatározza, hogy a szolgáltatásművelet megszemélyesíti-e a hívó identitását. |
ReleaseInstanceMode | Meghatározza, hogy a szolgáltatáspéldányok újra lesznek-e újrahasznosítottak a szolgáltatásműveleti hívás elején vagy végén. |
A minta futtatásakor a műveleti kérelmek és a válaszok megjelennek az ügyfélkonzol ablakában. A hívások közötti késés a szolgáltatásműveletek során indított hívások System.Threading.Thread.Sleep()
eredménye. A többi viselkedésminta részletesebben ismerteti ezeket a viselkedéseket. Nyomja le az ENTER billentyűt az ügyfélablakban az ügyfél leállításához.
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.
A minta beállítása, összeállítása és futtatása
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.
A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.
Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.