方法 : サービスのインスタンス化を制御する
サービスのインスタンス モードを設定することにより、System.ServiceModel.InstanceContext (およびそのユーザー定義のサービス オブジェクト) をいつ生成するかを指定できます。設定できるモードについては、InstanceContextMode 列挙体を参照してください。動作詳細情報、「動作を使用したランタイムの構成と拡張」を参照してください。実施例については、「Service: Behaviors Samples」を参照してください。
サービス インスタンスの有効期間をコードで制御するには
サービス クラスに ServiceBehaviorAttribute 属性を適用します。
InstanceContextMode プロパティを PerCall、PerSession、Single のいずれかの値に設定します。
<ServiceBehaviorAttribute(InstanceContextMode:=InstanceContextMode.PerCall)> _ Public Class CalculatorService
[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
例
ServiceBehaviorAttribute 属性の InstanceContextMode プロパティを PerCall に設定するコード例を示します。
' Define a service contract.
<ServiceContract([Namespace]:="http://Microsoft.ServiceModel.Samples")> _
Public Interface ICalculator
<OperationContract()> _
Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract()> _
Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract()> _
Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract()> _
Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
End Interface
' Service class which implements the service contract.
<ServiceBehaviorAttribute(InstanceContextMode:=InstanceContextMode.PerCall)> _
Public Class CalculatorService
Implements ICalculator
Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Add
Return n1 + n2
End Function
Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Subtract
Return n1 - n2
End Function
Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Multiply
Return n1 * n2
End Function
Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double _
Implements ICalculator.Divide
Return n1 / n2
End Function
End Class
// Define a service contract.
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
// Service class which implements the service contract.
[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
参照
リファレンス
ServiceBehaviorAttribute
InstanceContextMode
InstanceContextMode