2008-10-29 4 views
5

У меня есть клиентское приложение, которое использует службу WCF для вставки некоторых данных в базу данных. Клиентское приложение будет вызывать услугу на основе каждого события (это может быть каждый час или каждую секунду).Лучший подход для клиента WCF

Мне интересно, как лучше всего позвонить в этот сервис.

Должен ли я создать канал связи и держать его открытым все время или закрыть канал после каждого вызова и создать его снова?

+0

Один из намеков о создании хостов и интерфейсов и интерфейсов WCF: вызовите «хосты» ваших клиентских объектов и «клиенты» объектов вашего хоста. Когда вы находитесь на стороне клиента, вы хотите связаться с хостом, а не с «IClientSideComms». – Will 2008-10-29 12:47:49

ответ

5

Первый вопрос заключается в том, должен ли ваш сервер поддерживать какое-либо состояние о клиенте напрямую (т. Е. Выполняете транзакции, подобные сеансу?). Если вы находитесь, вам нужно будет иметь возможность управлять тем, как сервер хранит информацию между коммуникации.

Мое первоначальное чувство вашего вопроса состоит в том, что если нет необходимости оставлять соединение открытым, закройте его каждый раз и воссоздайте новое соединение по требованию. Это позволит избежать проблем, когда соединение может быть помещено в состояние сбоя между вызовами. Накладные расходы на создание и уничтожение соединений минимальны, и он (вероятно) сэкономит вам много времени при отладке , когда что-то пойдет не так.

1

Я думаю, вы, вероятно, захотите реализовать Keep Alive pattern с настраиваемой продолжительностью, чтобы сообщить свой базовый механизм, чтобы закрыть соединение, если прошло за пределами продолжительности Keep-alive с нулевой коммуникационной активностью.