更新 : 2007 年 11 月
セッションが許可されるか、許可されないか、または必要であるかを示す値を取得または設定します。
名前空間 :
System.ServiceModel
アセンブリ :
System.ServiceModel (System.ServiceModel.dll 内)
Public Property SessionMode As SessionMode
Dim instance As ServiceContractAttribute
Dim value As SessionMode
value = instance.SessionMode
instance.SessionMode = value
public SessionMode SessionMode { get; set; }
public:
property SessionMode SessionMode {
SessionMode get ();
void set (SessionMode value);
}
/** @property */
public SessionMode get_SessionMode()
/** @property */
public void set_SessionMode(SessionMode value)
public function get SessionMode () : SessionMode
public function set SessionMode (value : SessionMode)
SessionMode プロパティを使用して、バインディングでエンドポイント間のセッションをサポートすることを要求します。セッションとは、2 つ以上のエンドポイント間で交換される一連のメッセージを相互に関連付ける方法のことです。サービスがチャネル セッションをサポートする場合は、InstanceContextMode プロパティを使用して、サービス コントラクトが実装するインスタンスとチャネルセッションの関係を指定できます。バインディングがセッションをサポートしない場合は、例外がスローされます。
たとえば、SessionMode プロパティを SessionMode..::.Required、InstanceContextMode プロパティを PerSession に設定した場合、クライアントは、同じ接続を使用して同じサービス オブジェクトを繰り返し呼び出すことができます。
セッションとサービス インスタンスの詳細については、「セッションの使用」および「セッション、インスタンス化、および同時実行」を参照してください。
メモ : |
|---|
セッションをサポートするチャネルは、特定のセッションとのサービス インスタンスの既定の関連付けをサポートします。ただし、セッションの実装が異なれば、セッション ベースのインスタンス化の制御に加えてサポートされる機能も異なります。WCF には、セッションの多いアプリケーション動作を実現するために使用できる 4 種類のセッションが用意されており、それぞれのセッションは、そのセッションの種類に固有の追加動作を提供します。 |
System.ServiceModel.Channels..::.SecurityBindingElement は セキュリティ セッションをサポートします。このセッションでは、通信の両側が暗号化またはデジタル署名、あるいはその両方の処理を行うことに合意し、すべてのメッセージはセキュリティで保護されたメッセージ交換に関連付けられます。詳細については、「サービスのセキュリティ保護」を参照してください。たとえば、セキュリティ セッションと信頼できるセッションの両方のサポートを含む System.ServiceModel..::.WSHttpBinding は、既定では、メッセージを暗号化してデジタル署名を行うセキュリティで保護されたセッションのみを使用します。
System.ServiceModel..::.NetTcpBinding は、TCP/IP 接続によって公開されるセッションをサポートし、接続セッションにより、すべてのメッセージがソケット レベルで関連付けられるようにします。
WS-ReliableMessaging 仕様を実装する System.ServiceModel.Channels..::.ReliableSessionBindingElement は、メッセージが順に 1 回だけ配信される、信頼できるセッションをサポートしているため、メッセージがその交換時に複数のノードを通過するときでも信頼性を実現します。詳細については、「信頼できるセッション」を参照してください。
System.ServiceModel..::.NetMsmqBinding は、MSMQ データグラム セッションを提供します。詳細については、「Windows Communication Foundation のキュー」を参照してください。
SessionMode プロパティを設定すると、コントラクトが必要とするセッションの種類は指定されず、コントラクトがセッションを必要とすることだけが指定されることに注意してください。
次のサービス コントラクトは、SampleDuplexHello サービス実装とメッセージ交換するときに、構成されたバインディングでセッションを使用することを要求します。
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading;
namespace Microsoft.WCF.Documentation
{
[ServiceContract(
Name = "SampleDuplexHello",
Namespace = "http://microsoft.wcf.documentation",
CallbackContract = typeof(IHelloCallbackContract),
SessionMode = SessionMode.Required
)]
public interface IDuplexHello
{
[OperationContract(IsOneWay = true)]
void Hello(string greeting);
}
public interface IHelloCallbackContract
{
[OperationContract(IsOneWay = true)]
void Reply(string responseToGreeting);
}
[ServiceBehaviorAttribute(InstanceContextMode=InstanceContextMode.PerSession)]
public class DuplexHello : IDuplexHello
{
public DuplexHello()
{
Console.WriteLine("Service object created: " + this.GetHashCode().ToString());
}
~DuplexHello()
{
Console.WriteLine("Service object destroyed: " + this.GetHashCode().ToString());
}
public void Hello(string greeting)
{
Console.WriteLine("Caller sent: " + greeting);
Console.WriteLine("Session ID: " + OperationContext.Current.SessionId);
Console.WriteLine("Waiting two seconds before returning call.");
// Put a slight delay to demonstrate asynchronous behavior on client.
Thread.Sleep(2000);
IHelloCallbackContract callerProxy
= OperationContext.Current.GetCallbackChannel<IHelloCallbackContract>();
string response = "Service object " + this.GetHashCode().ToString() + " received: " + greeting;
Console.WriteLine("Sending back: " + response);
callerProxy.Reply(response);
}
}
}
- 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。
Windows Vista, Windows XP SP2, Windows Server 2003
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
.NET Framework
サポート対象 : 3.5、3.0
参照