OperationBehaviorAttribute.ReleaseInstanceMode 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
작업 호출 과정에서 서비스 개체를 재활용할 때를 나타내는 값을 가져오거나 설정합니다.
public:
property System::ServiceModel::ReleaseInstanceMode ReleaseInstanceMode { System::ServiceModel::ReleaseInstanceMode get(); void set(System::ServiceModel::ReleaseInstanceMode value); };
public System.ServiceModel.ReleaseInstanceMode ReleaseInstanceMode { get; set; }
member this.ReleaseInstanceMode : System.ServiceModel.ReleaseInstanceMode with get, set
Public Property ReleaseInstanceMode As ReleaseInstanceMode
속성 값
값 중 ReleaseInstanceMode 하나입니다. 기본값은 None입니다.
예외
값이 값 중 ReleaseInstanceMode 하나가 아닙니다.
예제
다음 예제 코드는 호출 전후에 서비스 개체를 재활용하는 데 사용하는 ReleaseInstanceMode 방법을 보여줍니다.
class SampleService : ISampleService
{
private Guid id;
private string session;
public SampleService()
{
id = Guid.NewGuid();
session = OperationContext.Current.SessionId;
Console.WriteLine("Object {0} has been created.", id);
Console.WriteLine("For session {0}", session);
}
[OperationBehavior(
ReleaseInstanceMode=ReleaseInstanceMode.BeforeAndAfterCall
)]
public string SampleMethod(string msg)
{
Console.WriteLine("The caller said: \"{0}\"", msg);
Console.WriteLine("For session {0}", OperationContext.Current.SessionId);
return "The service greets you: " + msg;
}
~SampleService()
{
Console.WriteLine("Object {0} has been destroyed.", id);
Console.WriteLine("For session {0}", session);
}
}
Friend Class SampleService
Implements ISampleService
Private id As Guid
Private session As String
Public Sub New()
id = Guid.NewGuid()
session = OperationContext.Current.SessionId
Console.WriteLine("Object {0} has been created.", id)
Console.WriteLine("For session {0}", session)
End Sub
<OperationBehavior(ReleaseInstanceMode:=ReleaseInstanceMode.BeforeAndAfterCall)> _
Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
Console.WriteLine("The caller said: ""{0}""", msg)
Console.WriteLine("For session {0}", OperationContext.Current.SessionId)
Return "The service greets you: " & msg
End Function
Protected Overrides Sub Finalize()
Console.WriteLine("Object {0} has been destroyed.", id)
Console.WriteLine("For session {0}", session)
End Sub
End Class
설명
ReleaseInstanceMode 이 속성을 사용하여 WCF(Windows Communication Foundation)가 메서드를 실행하는 과정에서 서비스 개체를 재활용하는 시기를 지정합니다. 기본 동작은 값에 따라 서비스 개체를 재활용하는 것입니다 InstanceContextMode . 속성을 설정하면 ReleaseInstanceMode 기본 동작이 변경됩니다.
스 ReleaseInstanceMode 레딩을 보장하지 않습니다. 서비스가 실행될 때 수정되지 않은 새 개체가 있어야 하는 경우 속성을 PerCall.로 설정합니다InstanceContextMode.
트랜잭션 시나리오 ReleaseInstanceMode 에서 이 속성은 메서드 호출을 처리하기 전에 서비스 개체와 연결된 이전 데이터가 정리되도록 하는 데 자주 사용됩니다. 또한 트랜잭션이 성공적으로 완료된 후 속성을 true로 설정 ReleaseServiceInstanceOnTransactionComplete 하여 트랜잭션과 연결된 서비스 개체가 재활용되는지 확인할 수 있습니다.
다음 동작을 선택할 수 있습니다.
작업이 호출되기 전에 서비스 개체를 재활용합니다.
작업이 호출된 후 서비스 개체를 재활용합니다.
작업이 호출되기 전과 후에 서비스 개체를 재활용합니다.
재활용 동작이 없습니다.
이중 클라이언트 애플리케이션에서 콜백 계약 작업을 구성하는 데 사용할 OperationBehaviorAttribute 수도 있습니다. 콜백 작업 ReleaseInstanceMode 에서 사용되는 경우 속성은 런타임에 throw되거나 예외가 throw되어야 NoneInvalidOperationException 합니다.
또한 서비스 개체 ServiceHost.ServiceHost(Object, Uri[]) 를 생성자에 전달하여 서비스를 만드는 경우 이 속성의 값은 마치 해당 속성으로 처리된다는 None것을 알아야 합니다.