powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Подскажите правильный путь.
4 сообщений из 4, страница 1 из 1
Подскажите правильный путь.
    #38336240
LINQStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дайте пожалуйста совет.

Сразу отмечу я не сильно профи в WCF ПОКА. Но все впереди, тема мне интересна. Прочитал книгу по WCF пару лет назад, а сейчас на меня свалился проект, в который пришлось резко нырнуть и "сразу сделать всем хорошо".
Проект пока сырой. Грубо говоря я подхватил упавший флаг и понес его дальше. И мне это нравится !

Итак. Есть клиентская часть. Клиент

Он должен ОООЧЕНЬ не регулярно отправлять запросы серверу.
Клиент отключен. Сервер тоже сидит ждет. Могут так часами молча сидеть.

Есть некое время "час пик". В течении которого идет очень тоненький ручеек запросов. Могут раз в 5 минут заявки идти, в это время, а могут и раз в 20 минут.
При этом в одной такой "сессии-заявке" клиент отправляет серверу штук 5 запросов, с периодом секунд 20-100 между каждым запросом (пока там пользователь введет данные не спеша). После выполнения "сессии", скорее всего следующая будет не скоро (ну минут через 10 минимум, а то и больше).

Таким образом получается такая картина: тишина... длинная тишина... часов 5. Потом вялый обмен запросов к серверу, скорость отклика не сильно критична, ну пару секунд подождать можно. После обработки 3-5 запросов, снова может быть Тишина, а может быть еще один вялый поток через 5-20 минут.

сейчас имеются такие настройки
<bindings>
<basicHttpBinding>
closeTimeout="00:00:15"
openTimeout="00:00:15" receiveTimeout="00:00:45" sendTimeout="00:00:45"

Связь через интернет. Ничего особого я еще пока не прикручивал.

Теперь вопросы
1. Подскажите как организовать принцип работы в таких условиях (при таком потоке запросов)?
Отмечу, что проект будет работать в таком режиме ОЧЕНЬ долго. Т.е. нет смысла оптимизировать на скорость. От клиента все время будут вялые запросы. Количество клиентов тоже вряд ли будет огромным.


Я вижу сейчас такой режим работы.
Все изначально отключены.

Когда с клиентом начинают работать (как я говорил это около 5 запросов с промежутками от 5 до 100 секунд), то в каждом вызываемом методе я делаю так:

- Создаю ФабрикуКанала
- Создаю Канал
- Делаю запрос ОДНОГО метода
- получаю данные и закрываю канал
- закрываю Фабрику (close)
- обрабатываю данные
- выход из метода. Канал и фабрика диспозятся неявно (фиг его знает, когда до них сборщик доберется). Этот момент я вообще пока не оптимизировал ( посоветуйте правильный путь пожалуйста )

это повторяет раз 5 (вызов разных методов, которых заново создаются Фабрика и канал).

Правильно ли я поступил ?

Насколько я знаю, после того как клиентский канал закрыт, соединение еще держится некоторое время.

2 Правильно ли я понимаю, что фреймворк .NET поддерживает соединение между клиентом и сервером какое-то время, даже если я задиспозил фабрику и канал ? Т.е. делает это невидимо для меня (ну как пул соединений для БД).

Таким образом, если у меня будут вызываться 5 функций с созданием фабрики-канала, то они будут использовать ОДНО соединение ?
Или каждый раз будет идти новое соединение ?

3. Если я не прав, и после диспоза фабрики все разрывается и потом идет по новой.
Насколько длительны задержки при вызове метода - с созданием фабрики по новой, созданием канала и вызовом метода канала ?
Насколько все медленней, в сравнении, чем если бы связь держалась всегда (ну по крайней мере между вызовами методов канала)

4. Или все же нужно создавать фабрику один раз, в начале потока запросов. И диспозить ее только через определенный таймаут "неиспользования". Кажется в WCF это есть. Достаточно какие то настройки в конфиг биндинга прописать.

Вопрос в том - в чем будет выгода в таком случае ? (это отсылка к моему предыдущему вопросу, в общем то).


Прошу прощения за тупые вопросы. Нужно перечитать книгу заново.
...
Рейтинг: 0 / 0
Подскажите правильный путь.
    #38339375
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINQStudent,

я бы создавал фабрику 1 раз на все время жизни приложения.
...
Рейтинг: 0 / 0
Подскажите правильный путь.
    #38339385
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор2 Правильно ли я понимаю, что фреймворк .NET поддерживает соединение между клиентом и сервером какое-то время, даже если я задиспозил фабрику и канал ? Т.е. делает это невидимо для меня (ну как пул соединений для БД).

По-моему это происходит на уровне фабрики
http://stackoverflow.com/questions/3509487/wcf-client-connection-caching-pooling
...
Рейтинг: 0 / 0
Подскажите правильный путь.
    #38341291
LINQStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch,

Спасибо за ответ.
Все не доберусь до чтения книги по WCF. Нужно прочитать по Линку и еще пару - сначала.

Почитаю ссылку, что Вы дали. Может там разъяснено как надо правильно.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Подскажите правильный путь.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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