отладка WCF - какие есть tips?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 14.06.10 21:53
Оценка:
привет!
я подключился к большому проекту и, ко всему прочему, только начал разбираться с WCF. Проблема на данный момент такая — есть WCF сервис, к нему есть консольный клиент. Даже если я увеличил таймаут (с помощью sendTimeout атрибута на клиенте и сервере), то все равно получаю socet timeout (биндиг net.tcp). подумал перейти на другой биндинг (например wshttp), но что-то где-то перестало запускаться (еще раз проект очень большой). При попытке разобраться со всем сразу сносит голову и решил уже написать асинхронный вызов внутри сервера (аля хак временный, пока разбираюсь), что бы избежать все эти таймауты, но решил спросить уважаемый РСДН — есть ли какой-нить способо сделать более прямым способом?

Спасибо!
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re: отладка WCF - какие есть tips?
От: Аноним  
Дата: 15.06.10 03:14
Оценка:
Здравствуйте, Denis, Вы писали:

D>...но решил спросить уважаемый РСДН — есть ли какой-нить способо сделать более прямым способом?

Можно создать проект тестов, создавать в нём объект вашего сервиса и отлаживать напрямую без WCF
Re: отладка WCF - какие есть tips?
От: Ziaw Россия  
Дата: 15.06.10 03:28
Оценка: 4 (1)
Здравствуйте, Denis, Вы писали:

D>привет!

D>я подключился к большому проекту и, ко всему прочему, только начал разбираться с WCF. Проблема на данный момент такая — есть WCF сервис, к нему есть консольный клиент. Даже если я увеличил таймаут (с помощью sendTimeout атрибута на клиенте и сервере), то все равно получаю socet timeout (биндиг net.tcp). подумал перейти на другой биндинг (например wshttp), но что-то где-то перестало запускаться (еще раз проект очень большой). При попытке разобраться со всем сразу сносит голову и решил уже написать асинхронный вызов внутри сервера (аля хак временный, пока разбираюсь), что бы избежать все эти таймауты, но решил спросить уважаемый РСДН — есть ли какой-нить способо сделать более прямым способом?

Более прямой способ это обложить сценарии работы сервиса тестами. Без WCF как уже было сказано. Во первых станет проще дебажить, во вторых сильно сократится необходимость в дебаге вообще. Код покрытый юнит тестами редко требуется дебажить.
Re: отладка WCF - какие есть tips?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 15.06.10 05:20
Оценка: 6 (1)
Здравствуйте, Denis, Вы писали:

Если таймаут выскакивает сразу при попытке подключения, то это проблемы с настройкой безопасности — не удаётся установить защищённое соединение.
Попытайся выключить безопасность. Это делается как-то так.

На сервере и на клиенте:
<bindings>
    <netTcpBinding>
        <binding name="YourNameServiceBindings">
            <security mode="None" />
        </binding>
    </netTcpBinding>
</bindings>
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: отладка WCF - какие есть tips?
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 15.06.10 06:20
Оценка: 7 (2)
Здравствуйте, Denis, Вы писали:

D>привет!

D>я подключился к большому проекту и, ко всему прочему, только начал разбираться с WCF. Проблема на данный момент такая — есть WCF сервис, к нему есть консольный клиент. Даже если я увеличил таймаут (с помощью sendTimeout атрибута на клиенте и сервере), то все равно получаю socet timeout (биндиг net.tcp). подумал перейти на другой биндинг (например wshttp), но что-то где-то перестало запускаться (еще раз проект очень большой). При попытке разобраться со всем сразу сносит голову и решил уже написать асинхронный вызов внутри сервера (аля хак временный, пока разбираюсь), что бы избежать все эти таймауты, но решил спросить уважаемый РСДН — есть ли какой-нить способо сделать более прямым способом?

Во-первых, нужно врубить WCF Tracing, как на клиенте, так и на сервере. Вполне возможно, что в таком случае ты получишь больше информации и сможешь таки понять, где на самом деле кроется проблема. Например, у меня когда-то была такая проблема: клиенты не подключались к серверсу и падали с socket timeout-ом, как выяснилось причина была в том, что я превышал количество одновременно подключенных клиентов, в результате, при попытке подключиться в следующий раз WCF ждал освобождение какой-либо сессии, не дожидался этого и падал по timeout-у (этим я хочу показать, что причина (ограничение количество одновременных сессий) и следствие (timeout) могут быть достаточно далеко).

Ну и во-вторых, асинхронный вызов внутри сервера едва ли поможет, если падает взаимодействие между клиентом и сервером.
Re: отладка WCF - какие есть tips?
От: Аноним  
Дата: 15.06.10 07:49
Оценка:
Здравствуйте, Denis, Вы писали:

я в коде сервиса ставлю DEBUGGER.BREAK() и имею счастье ))
Re[2]: отладка WCF - какие есть tips?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 15.06.10 16:27
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Более прямой способ это обложить сценарии работы сервиса тестами. Без WCF как уже было сказано. Во первых станет проще дебажить, во вторых сильно сократится необходимость в дебаге вообще.


не получится (точнее на это уйдет не один год). ибо система большая и просто так поднять состояние (state) очень сложно. а отлаживать надо на настоящих данных.

Z>Код покрытый юнит тестами редко требуется дебажить.


... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[2]: отладка WCF - какие есть tips?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 15.06.10 16:27
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Denis, Вы писали:


A>Если таймаут выскакивает сразу при попытке подключения, то это проблемы с настройкой безопасности — не удаётся установить защищённое соединение.

A>Попытайся выключить безопасность. Это делается как-то так.

A>На сервере и на клиенте:

A>
A><bindings>
A>    <netTcpBinding>
A>        <binding name="YourNameServiceBindings">
A>            <security mode="None" />
A>        </binding>
A>    </netTcpBinding>
A></bindings>
A>


спасибо! но вылетает когда отлаживаю функцию (ибо функция длинная и торчу в дебагере долго)
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[2]: отладка WCF - какие есть tips?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 15.06.10 16:27
Оценка:
Здравствуйте, SergeyT., Вы писали:
ST>Во-первых, нужно врубить WCF Tracing, как на клиенте, так и на сервере. Вполне возможно, что в таком случае ты получишь больше информации и сможешь таки понять, где на самом деле кроется проблема. Например, у меня когда-то была такая проблема: клиенты не подключались к серверсу и падали с socket timeout-ом, как выяснилось причина была в том, что я превышал количество одновременно подключенных клиентов, в результате, при попытке подключиться в следующий раз WCF ждал освобождение какой-либо сессии, не дожидался этого и падал по timeout-у (этим я хочу показать, что причина (ограничение количество одновременных сессий) и следствие (timeout) могут быть достаточно далеко).

ST>Ну и во-вторых, асинхронный вызов внутри сервера едва ли поможет, если падает взаимодействие между клиентом и сервером.


спасибо попробую!
падает уже в процессе вызова, пока я разбираюсь (видно как отваливается по таймауту). поэтому в асинхронном варианте я просто отпущу клиента (я уже так и сделал, но надо теперь или через рефлекшен писать обощенный варинат для многих функций или чтото придумывать приличное)
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[2]: отладка WCF - какие есть tips?
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 15.06.10 16:27
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Denis, Вы писали:


А>я в коде сервиса ставлю DEBUGGER.BREAK() и имею счастье ))


от таймаутов соединения это не спасает
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.