avatar
g*g
2
We have a remote web service, a thick client will invoke this web service
to run a long report on server side and get the report back, which takes
a while, say, several minutes.
Unfortunately, the connection will be reset before the report is returned
and
a broken pipeline error would show up on server side. I guess some hardware
in between detects there's no activity after certin period and resets it.
Is there any simple way to get around this?
avatar
p*a
3
specflow,不过不支持wpf

【在 c*********e 的大作中提到】
: 问问。telerik有啥优缺点?
avatar
c*t
4
I think that is basically no way. At best you could try and see if
different client (telnet, java, browser) would make a difference.
One possible approach is to return dummy result (or the job id) first.
Then on the subsequent query (with job id) check if the job has been
done or not.

hardware

【在 g*****g 的大作中提到】
: We have a remote web service, a thick client will invoke this web service
: to run a long report on server side and get the report back, which takes
: a while, say, several minutes.
: Unfortunately, the connection will be reset before the report is returned
: and
: a broken pipeline error would show up on server side. I guess some hardware
: in between detects there's no activity after certin period and resets it.
: Is there any simple way to get around this?

avatar
c*e
5
telerik能自动输入值,非常适合多次hack用户名和密码。

【在 p*a 的大作中提到】
: specflow,不过不支持wpf
avatar
A*o
6
when using http, one normal create a timer on the html
and refresh the page once a while until the report is generated.
i guess similiar approach can be done on your case.

hardware

【在 g*****g 的大作中提到】
: We have a remote web service, a thick client will invoke this web service
: to run a long report on server side and get the report back, which takes
: a while, say, several minutes.
: Unfortunately, the connection will be reset before the report is returned
: and
: a broken pipeline error would show up on server side. I guess some hardware
: in between detects there's no activity after certin period and resets it.
: Is there any simple way to get around this?

avatar
s*e
7
browser may have time out setting. if that is the case, you can ask your
clients to change their browser setting. for example, as i know, IE uses
registry to control time out, but you can change the time out time.
if the timeout happens on the server side, you need to check the timeout
configuration for each intermediate node. For example, apcahe web server can
be timed out, firewall can be timed out, etc. It is my understanding that
you can always configure the time out time no matter how many
avatar
b*y
8
what about program the server side to use http keep alive?
I am just guessing.
avatar
k*r
9
Since it's a web service, you have a lot of flexibility.
The server can just return a key (job id) in the response
and start a thread to do the job. The client then polls job
status with the job ID.

hardware

【在 g*****g 的大作中提到】
: We have a remote web service, a thick client will invoke this web service
: to run a long report on server side and get the report back, which takes
: a while, say, several minutes.
: Unfortunately, the connection will be reset before the report is returned
: and
: a broken pipeline error would show up on server side. I guess some hardware
: in between detects there's no activity after certin period and resets it.
: Is there any simple way to get around this?

avatar
B*g
10
I think the same way.
But I don't know how to store the real result on server before client
retrieve. (I only know DB solution)

【在 k***r 的大作中提到】
: Since it's a web service, you have a lot of flexibility.
: The server can just return a key (job id) in the response
: and start a thread to do the job. The client then polls job
: status with the job ID.
:
: hardware

avatar
k*r
11
A temp dir named with the session ID would be good.
Delete the result dir after client retrieves it.
A thread or cron job to "maintain" that directory: remove
expired results.

【在 B*****g 的大作中提到】
: I think the same way.
: But I don't know how to store the real result on server before client
: retrieve. (I only know DB solution)

avatar
g*g
12
I thought of that yesterday too, but didn't like it coz it's kind of
troublesome, couldn't think of better way though. thansk for the input.

【在 k***r 的大作中提到】
: Since it's a web service, you have a lot of flexibility.
: The server can just return a key (job id) in the response
: and start a thread to do the job. The client then polls job
: status with the job ID.
:
: hardware

avatar
m*t
13

That's my first reaction too, except the client needs to initiate
the connection with keep alive, which is what a modern browser
would do these days.
But if it takes several minutes for most requests, I'd redesign
it to use the asynchronous model others already suggested.

【在 b******y 的大作中提到】
: what about program the server side to use http keep alive?
: I am just guessing.

avatar
r*l
14
We had exact problem in one previous project. Since
our client displays the result list in pages, it was
natural for us to use pagination and ask the results
page by page.

hardware

【在 g*****g 的大作中提到】
: We have a remote web service, a thick client will invoke this web service
: to run a long report on server side and get the report back, which takes
: a while, say, several minutes.
: Unfortunately, the connection will be reset before the report is returned
: and
: a broken pipeline error would show up on server side. I guess some hardware
: in between detects there's no activity after certin period and resets it.
: Is there any simple way to get around this?

avatar
k*r
15
It's more work than loading a simple page but there's
probably no way around that.

【在 g*****g 的大作中提到】
: I thought of that yesterday too, but didn't like it coz it's kind of
: troublesome, couldn't think of better way though. thansk for the input.

avatar
B*g
16
you mean create temp folder and file on server?

【在 k***r 的大作中提到】
: A temp dir named with the session ID would be good.
: Delete the result dir after client retrieves it.
: A thread or cron job to "maintain" that directory: remove
: expired results.

avatar
k*r
17
Yes.

【在 B*****g 的大作中提到】
: you mean create temp folder and file on server?
avatar
k*r
18
If a job takes longer time, it can not be solved with
pagination. You can still refresh and refresh, until
the page gets the result, though.

【在 r*****l 的大作中提到】
: We had exact problem in one previous project. Since
: our client displays the result list in pages, it was
: natural for us to use pagination and ask the results
: page by page.
:
: hardware

avatar
B*g
19
don't know how goodbug generated webservice, if retrieve data from DB, it is
better to do DB tuning first.

【在 k***r 的大作中提到】
: If a job takes longer time, it can not be solved with
: pagination. You can still refresh and refresh, until
: the page gets the result, though.

avatar
B*g
20
no xi huan create temp folder/file on server. but seems no other way.

【在 k***r 的大作中提到】
: Yes.
avatar
k*r
21
Of course you can put data in a temp job result
table in the DB as well.

【在 B*****g 的大作中提到】
: no xi huan create temp folder/file on server. but seems no other way.
avatar
s*n
22
persistence is unnecessary

【在 k***r 的大作中提到】
: Of course you can put data in a temp job result
: table in the DB as well.

avatar
k*r
23
It's temporary persistence :) You can always delete them
once results are retrieved.

【在 s******n 的大作中提到】
: persistence is unnecessary
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。