Хранение отдельных данных и групп по общему ключу - PullRequest
0 голосов
/ 08 марта 2011

Работая с API, который может обрабатывать несколько соединений (то есть сессий), каждый из этих сеансов имеет уникальный идентификатор (sessionID) и отслеживает все входящие и исходящие сообщения через порядковые номера.

Class1

public void Method1(SessionID sessionID, Message message)
{       
    var ID = sessionID;
    var foo = message.InSeqNo;
}

public void Method2(SessionID sessionID, Message message)
{
    var ID = SessionID;
    var bar = message.OutSeqNo;
}

Мне любопытно, как бы вы порекомендовали хранить эти данные вместе, чтобы каждый экземпляр мог отображаться независимо на основе его sessionID.

Нет необходимости сохранять предыдущие номера, потому что они отображаются только.Ни один из идентификаторов SessionID не изменится, и каждый порядковый номер будет обновляться независимо.

Лучшее, что я могу придумать, - это использовать два отдельных поля, например Dictionary<sessionID, number>,. Очистить каждое поле при обновлении, повторно добавить новые значения, затем присоединитесь к ним через LINQ и отобразите информацию.

1 Ответ

1 голос
/ 08 марта 2011

Почему бы не один класс, содержащий входящие и исходящие порядковые номера для определенного идентификатора?

class SessionInfo
{
    public int SessionId { get; private set; }
    public int InSeqNo { get; set; }
    public int OutSeqNo { get; set; }
}

словарные сессии = новый словарь ();

Чтобы обновить InSeqNo сеанса, затем:

SessionInfo sess;
if (Sessions.TryGetValue(sessionId, out sess))
{
    ++sess.InSeqNo;
}

Или я упускаю что-то фундаментальное в вашем вопросе?

...