Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование инстанса сервиса после посбэка / 19 сообщений из 19, страница 1 из 1
23.06.2014, 17:47
    #38677722
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
Есть wcf сервис с поддержкой сессий. Необходимо на aspx странице при одном событии инициализировать сервис, а после постбэка в другом событии выполнить метод сервиса. Где хранить инстанс? В сессии и в кэше не получится, т.к. базовый класс инстанса несериализуемый.
...
Рейтинг: 0 / 0
23.06.2014, 18:19
    #38677774
VIT2708
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tierЕсть wcf сервис с поддержкой сессий. Необходимо на aspx странице при одном событии инициализировать сервис, а после постбэка в другом событии выполнить метод сервиса. Где хранить инстанс? В сессии и в кэше не получится, т.к. базовый класс инстанса несериализуемый.

Зачем хранить экземпляр, храните параметры
...
Рейтинг: 0 / 0
23.06.2014, 18:34
    #38677797
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
VIT2708,

Можно поподробнее? Можно восстановить экземпляр ServiceClient по параметрам?
...
Рейтинг: 0 / 0
23.06.2014, 18:54
    #38677820
VIT2708
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tier,

Так вызывайте сервис и передавайте ему сохраненные параметры.

PS: Я еще нигде не видел что бы сохраняли экземпляры сервисов вы первый
...
Рейтинг: 0 / 0
23.06.2014, 18:59
    #38677822
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tierЕсть wcf сервис с поддержкой сессий. Необходимо на aspx странице при одном событии инициализировать сервис, а после постбэка в другом событии выполнить метод сервиса. Где хранить инстанс? В сессии и в кэше не получится, т.к. базовый класс инстанса несериализуемый.Ну сделайте его static и будут все запросы использовать один и тот же экземпляр
...
Рейтинг: 0 / 0
23.06.2014, 19:18
    #38677837
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
VIT2708
Какие именно параметры я должен сохранять и как инициализировать клиент сервиса с этими параметрами? Ткните носом.

skyANA
Была идея сделать фабрику коннектов через синглтон, но сайт работает в двух application и такой вариант не проканал.
...
Рейтинг: 0 / 0
23.06.2014, 19:24
    #38677841
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
Короче я не понял, в чём смысл этих плясок.
...
Рейтинг: 0 / 0
23.06.2014, 19:35
    #38677853
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
skyANA

А смысл следующий, в сервисе инициализируется довольно тяжелый объект, делаются необходимые проверки - результат выводится клиенту, а потом при согласии клиента этот объект записывается, чтоб этот объект не гонять по сети он хранится в сервисе, в котором поддерживается сессия. Для обеспечения сохранении сессии сервиса между постбэками необходимо либо как-то хранить инстанс сервиса или как-то его восстанавливать.
...
Рейтинг: 0 / 0
23.06.2014, 20:05
    #38677866
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tierХрани состояние между вызовами в БД.
...
Рейтинг: 0 / 0
23.06.2014, 20:39
    #38677880
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tier,

skyANA вполне реально предложил
это ж обыкновенное кеширование, ну не хотите в стандартных местах
сделайте свой кеш
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 static class Cache<T>
    {
        static readonly Dictionary<int,T> Dictionary=new Dictionary<int, T>();

        public static void Add(int key, T value)
        {
            Dictionary.Add(key,value);
        }

        public static T GetInstans(int key)
        {
            return Dictionary[key];
        }
    }


без обвесов,( потоки, удаление и т.д)
...
Рейтинг: 0 / 0
23.06.2014, 20:49
    #38677888
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
Где-то в степи

Я ж выше писал что такой вариант не проканает, т.к. сайт висит на двух процессах, кэш одного не будет видеть кэш другого.
...
Рейтинг: 0 / 0
23.06.2014, 20:55
    #38677894
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tierГде-то в степи

Я ж выше писал что такой вариант не проканает, т.к. сайт висит на двух процессах, кэш одного не будет видеть кэш другого.

замените сессии wcf на токен, и гоняйте его между сервисом и страницами
...
Рейтинг: 0 / 0
23.06.2014, 22:54
    #38677934
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tierГде-то в степи

Я ж выше писал что такой вариант не проканает, т.к. сайт висит на двух процессах, кэш одного не будет видеть кэш другого.А Вы на стороне сервиса кэшируйте свой "довольно тяжелый объект", что не хотите гонять по сети.
...
Рейтинг: 0 / 0
24.06.2014, 10:28
    #38678151
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
Изопропил
Это только если поменять InstanceContextMode на Single и мутить хранение объектов на стороне сервиса, допустим в кэше.
Но мне кажется это менее интересный вариант, чем использование в сервисе сессий.

skyANA
Как раз для кэширования в сервисе и был использован per session instance mode. Т.е. для каждого коннекта создается сессия и объект обрабатывается разными методами в рамках одной сессии, но надо как то сохранять инстанс.
...
Рейтинг: 0 / 0
24.06.2014, 10:58
    #38678204
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
А ничё, что при перезапуске вебсервера пропадут все незакоммиченные пользователем "довольно тяжелые объекты"?
...
Рейтинг: 0 / 0
24.06.2014, 11:30
    #38678249
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
Алексей К

Неприятно конечно, но особо ничего страшного в потере кэша нет.
...
Рейтинг: 0 / 0
24.06.2014, 11:38
    #38678274
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tier,

да кэшировать на стороне сервиса

что касается параметров - по ним искать на стороне сервиса нужный экземпляр и воссоздавать его в случае отсутсвия,

в этом случае ни сессий, ни токенов, ни прочих костылей не потребуется
...
Рейтинг: 0 / 0
24.06.2014, 13:42
    #38678480
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
noname-tierАлексей К

Неприятно конечно, но особо ничего страшного в потере кэша нет.Ну а почему тогда не хочешь хранить "довольно тяжелые объекты" в БД? Тогда режим WCF PerCall + никаких неприятностей. Разве что подчищать в БД время от времени старые незакоммиченные объекты вероятно захочется. Но это не проблема...
...
Рейтинг: 0 / 0
24.06.2014, 14:18
    #38678529
noname-tier
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование инстанса сервиса после посбэка
Изопропил
Так и сделал
Алексей К
В этом плане кэш интересней, выше скорость чтения записи и не надо ничего мудрить с очисткой.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование инстанса сервиса после посбэка / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]