Что является самым масштабируемым способом управления состоянием в WCF.WCF Управление информацией состояния сеанса
Мне нужна только одна переменная, указывающая сеанс, и я буду управлять информацией относительно сеанса в MSSQL. Мне не нужно знать, когда закончится сеанс. Раз в день я просто убираю любые старые сеансы.
Появляется SessionID - это переменная.
Для масштаба я использую Per Call, поскольку ctor пуст. Я не думаю, что мне нужно за сеанс.
В моем простом тесте EightBall я получаю SessionID, который представляет сеанс. Но я просто тестирую одну коробку.
Что меня беспокоит, так это то, что я вижу документацию, необходимую мне для установки ReliableSessionBindingElement On и по умолчанию она выключена.
Является ли SessionID надежным индикатором сеанса в следующей конфигурации?
<system.serviceModel>
<services>
<service name="MajicEightBallServiceLib.MagicEightBallService"
behaviorConfiguration="EightBallServiceMEXBehavior" >
<endpoint address=""
binding="wsHttpBinding"
contract="MajicEightBallServiceLib.IEightBall" />
<endpoint address="mex"
binding ="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/MagicEightBallService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="EightBallServiceMEXBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
[ServiceBehavior (InstanceContextMode=InstanceContextMode.PerCall)]
public class MagicEightBallService : IEightBall
{
public MagicEightBallService()
{
Console.WriteLine("Eightball awaits your question ...");
}
public string ObtainAnswerToQuestion(string userQuestion)
{
return "maybe " + OperationContext.Current.SessionId.ToString();
}
public sDoc GetSdoc(int sID)
{
List<sDocProp> props = new List<sDocProp>();
sDocProp prop1 = new sDocProp { ID = 1, Name = "Prop1", ArrivalStatus = ArrivalStatus.OnTime };
props.Add(prop1);
sDocPropStringSV prop2 = new sDocPropStringSV { ID = 1, Name = "Prop1", ArrivalStatus = ArrivalStatus.OnTime, Value = "StrValue1" };
props.Add(prop2);
sDoc sDoc = new sDoc { sID = sID, sParID = 1, Props = props, SessionID = OperationContext.Current.SessionId.ToString() };
return sDoc;
}
Много хорошей информации, но, пожалуйста, проясните следующий вопрос. «Является ли SessionID надежным индикатором сеанса в следующей конфигурации?» – Paparazzi