ASP 调用 Web service 问题

BigBangBug 2010-08-31 11:23:22
我有一个项目使用asp调用web service时遇到如下问题,望有经验的朋友帮帮忙,谢谢。
场景:有3个asp对应调用3个web service,如
asp1 -- webservice1 -- function1
asp2 -- webservice2 -- function2
asp3 -- webservice3 -- function3

function1到function3需要循序处理,即function1处理结果会储存在内存中等function2继续处理然后再等function3处理,它们之间有一个id作为联系。

在使用压力测试进行大并发测试时有如下问题:
1.在大并发下function1,function2的处理可能比较慢,是否会导致asp1调用webservice1后function1未处理完就返回了结果?
2.因为压力测试软件的原因,asp1只要返回了结果(无论对错)都将直接调用下一步骤的逻辑,是否会导致function1未处理完,asp2就会被继续调用从而function2调用失败?
3.asp调用webservice时等待返回结果的时间(即timeout时间)是否可以设置?

另asp掉用webservice的程序样例如下:
set soapobj = CreateObject("MSSOAP.SoapClient30")
soapobj.ClientProperty("ServerHTTPRequest") = True
Call soapobj.mssoapinit(wsdlPath,WebFunction,"","")
str= soapobj.doFunction1(str1)
...全文
121 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongsun 2010-09-02
  • 打赏
  • 举报
回复
你都说了 你控制循环了。

只有当 第一个web服务被调用 返回数据后才执行第二个 web服务。

就算是大并发也不会违背这个规则。只是可能会因为服务器请求过多 超过iis连接数,导致连接超时。

可以设置超时时间,在web.config中。
龍月 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 javavsnet 的回复:]
ly_longyue,我的意思是,function1处理完会把中间结果保存在内存中,function2处理时用id把之前处理的中间结果取出继续处理。
另你给的代码是自己构造对wsdl协议的处理吗?
[/Quote]
既然保存在内存中
内存 你 不清空 就不会 有问题吧
BigBangBug 2010-08-31
  • 打赏
  • 举报
回复
ly_longyue,我的意思是,function1处理完会把中间结果保存在内存中,function2处理时用id把之前处理的中间结果取出继续处理。
另你给的代码是自己构造对wsdl协议的处理吗?
龍月 2010-08-31
  • 打赏
  • 举报
回复
<% 
'response.Write ("456")
'Response.End ()


title=trim(request.form("title"))'标题
content=trim(request.form("U_content"))'内容
rankName=trim(request.form("rankName"))'部门
checktype=trim(request.form("checktype"))'类型
id=trim(request.form("id"))'修改id
addtime=trim(request.form("addtime"))'修改id
url = "http://localhost:50432/phone/webservice/sender.asmx/addNews"

SoapRequest="title="&title&"&content="&content&"&rankName="&rankName&"&type="&checktype&"&id="&id&"&addtime="&addtime

Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")

xmlhttp.Open "POST",url,false

xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

xmlhttp.setRequestHeader "HOST","XXX"

xmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)

xmlhttp.Send(SoapRequest)

If xmlhttp.Status = 200 Then

Set xmlDOC = server.CreateObject("MSXML.DOMDocument")

xmlDOC.load(xmlhttp.responseXML)


xmlStr = xmlDOC.xml

xmlStr = Replace(xmlStr,"<","<",1,-1,1)

xmlStr = Replace(xmlStr,">",">",1,-1,1)

if checktype="add" then

If xmlDOC.documentElement.childNodes(0).text = "ok" Then
response.Write "<script language=javascript>alert('添加成功!');document.location.href='NewsList.asp?type="&rankName&"'</script> "
Response.End ()
else
response.Write "<script language=javascript>alert('"&xmlDOC.documentElement.childNodes(0).text&"');document.location.href='NewsList.asp?type="&rankName&"'</script> "
Response.End ()

End if
end if

if checktype="edit" then

If xmlDOC.documentElement.childNodes(0).text = "ok" Then
response.Write "<script language=javascript>alert('修改成功!');document.location.href='NewsList.asp?type="&rankName&"'</script> "
Response.End ()
else
response.Write "<script language=javascript>alert('"&xmlDOC.documentElement.childNodes(0).text&"');document.location.href='NewsList.asp?type="&rankName&"'</script> "
Response.End ()

End if
end if


End if


%>


这是我 之前asp 调用 webservice 的例子
总是在获取完数据后才会提示成功~
是获取完数据哦
龍月 2010-08-31
  • 打赏
  • 举报
回复
在内存中等 什么意思。。

1 不会
2 不会
3 不知道

一句话: 试了就知道哦
孟子E章 2010-08-31
  • 打赏
  • 举报
回复
用XMLHTTP调用试试
BigBangBug 2010-08-31
  • 打赏
  • 举报
回复
ly_longyue,其实我想了解的是我这段“str= soapobj.doFunction1(str1)”的代码是否一定会等待后台程序跑完返回结果后才继续执行下面的事情?

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧