一个关于等待的高难问题!

nonhero 2003-09-29 06:08:44
先把思路说一下:
假设我是A(网站),要实现一个业务需求,需要用到C(数据库)的数据。但特殊的是,C不允许A直接访问。A要先将输入数据往B(叫“中间数据库”吧)的一个表(姑且叫“接口表”吧)中写入形成一个请求,然后等待C完成;而C端有一个线程不断扫描这个接口表,一旦发现有新的请求,就处理,然后将结果写回接口表;A检测到C已经完成刚才的请求,就解除等待状态,返回业务结果。

现在的要求是,当A的业务参数输入端输入后,按提交,此时应该弹出一个等待的窗口(层、或页面),用户除了等待,什么也不允许干,类似于模式对话框的效果,但不能关闭,意思是只能当前业务完成,才能进行其它操作;同时后台照样得完成往B中写请求,定时(3秒)查看C是否完成的标志等动作,检测C已经完成的标志,清除等待状态,返回结果并显示,界面恢复可使用。

请大家谈谈自己的看法,不胜感激!
...全文
41 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonhero 2004-03-23
  • 打赏
  • 举报
回复
To mikespook(谁说叫Mike的一定是狼?) :
C 数据库的数据高度机密,而 B 数据库的数据安全要求不高,B 存放的只是操作状态!
mikespook 2004-03-22
  • 打赏
  • 举报
回复
好麻烦的解决办法~~~
你直接同步数据库,将C的数据同步到B里不就可以了?
nonhero 2004-03-22
  • 打赏
  • 举报
回复
奇怪!
明明分数已经分配,帖子却是未结帖状态,而且不允许我再结帖,咋办?
xufeiwang 2004-03-22
  • 打赏
  • 举报
回复
window.showModalDialog 这个办法比较简单
nonhero 2004-03-22
  • 打赏
  • 举报
回复
To sx1123(sx1123) :
你用 Window.Open 方法,实现的只是非模态对话框的效果,无法阻止用户点击我的主界面!
不过还是谢谢!

好长时间没来,问题其实早已解决了,只是不太完美!
我现在使用以下方法,有时不太灵,就提示一个警告,将就使用:
-----------------------------

首先,在用户按提交时用
window.showModalDialog("Waiting.asp", "", "dialogWidth:350px; dialogHeight: 120px; center:yes; scroll:no; status:no; help:no; unadorned:yes")
弹出一个等待的模态窗口;

然后在 Waiting.asp 中实现:
1、设置一个等待标志;
2、添加 Window_onBeforeUnload 事件处理:如果等待标志为设置状态,取消 Unload 事件,继续定时检查任务是否完成;如果为清除状态,关闭等待窗口;
3、如果检查任务已经完成,清除等待标志,并调用 Window.Close 关闭等待窗口。

附 Window_onBeforeUnload 事件处理函数:
' 可阻止用户关闭窗口(for win2000)的函数
Function Window_onBeforeUnload()
Dim WshShell

If bRequiredClose = False Then
Window.Event.returnValue = "[强烈建议]" & vbCrLf & " 不要手工关闭该窗口, 否则将引起无法预料的错误! " & vbCrLf & "请单击 '取消' 按钮返回等待状态!"

On Error Resume Next

' 2003-11-04
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{ESC}"

If Err Then
Window.returnValue = "IllegalClosed"
End If
End If
End Function

最后,结帖散分,^_^
sfply 2003-09-30
  • 打赏
  • 举报
回复
这算是典型的三层结构吧
用纯粹的ASP是不可能实现的,必须用到中间件
这种情况多见于客户/中间件/数据服务器的三层结构应用程序中
需要用DELPHI,PB,VC等编写
呵呵,这可是一个高端而庞大的系统呀
没有万吧块钱估计没哪个愿给你开发
nonhero 2003-09-30
  • 打赏
  • 举报
回复
Up!
maxid 2003-09-30
  • 打赏
  • 举报
回复
你除了用asp还会用其它语言吗(如Delphi,VB,VC,JAVA)自己写个组件吧
nonhero 2003-09-30
  • 打赏
  • 举报
回复
呵呵,我是说如何实现这种等待?有具体代码更好!
期待中……
sx1123 2003-09-30
  • 打赏
  • 举报
回复
更正
最后一行</script>
应该在b.asp
上面
sx1123 2003-09-30
  • 打赏
  • 举报
回复
a.asp '提交
<input type="button" name="button1" value="提交" onclick="vbscript:popWin()">
<script language="vbscript">
function popWin()

window.open "process.asp","sx1123","toolbar=no,menubar=no,location=no,fullscreen=yes"
document.location.replace("b.asp")

end function

b.asp '处理 完成后session("OK")="ok"

process.asp '等待页面
<% @Language=VBScript %>
<% Option Explicit %>
<% Response.Expires=0 %>
<%
If Request.QueryString("pa")="yes" Then
session("OK")=""
%>
<SCRIPT LANGUAGE="vbScript">
window.close()
</SCRIPT>
<%
End If
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>统计信息系统</TITLE>
<link rel="stylesheet" href="style.css" type="text/css">
<SCRIPT LANGUAGE="vbScript">
<!--
function checkOK()
document.location.reload()
end function
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--

function window_onload() {
if (document.form1.sx.value=="ok"){
setTimeout("document.location.href='process.asp?pa=yes'",2500);

}
else {
setTimeout("checkOK()",100);
}
}
//-->
</SCRIPT>
</HEAD>
<BODY LANGUAGE=javascript onload="return window_onload()">
<form name="form1" method="post" action="process.asp">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="50%" align=center>
<tr>
<td align="center" width="100%"><p><h3>统计信息系统</h></p>
</td>
</tr>
<tr>
<td align="center" width="100%">正在加载数据
</td>
</tr>
<tr>
<td align="center" width="100%"><img src="images/wait.gif">
</td>
</tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="sx" value="<%=session("OK")%>">
</center>
</form>
</BODY>
</HTML>



</script>
nonhero 2003-09-30
  • 打赏
  • 举报
回复
呵呵,我需要的只是实现等待同时屏蔽用户操作的一个算法而已。整个系统吗,我也做了十之七八啦!大家帮我出谋划策,我呢,也在摸索,等我成功了,我会把源代码和实现原理贴出来。大家一起努力、进步!
zhanbairu 2003-09-29
  • 打赏
  • 举报
回复
顶,望有高手能解出来
avonqin 2003-09-29
  • 打赏
  • 举报
回复
楼主的思路既然这么清晰,那做起来还有什么问题呢?
超级大笨狼 2003-09-29
  • 打赏
  • 举报
回复
我觉得你有写概念不清楚。
zhangshengjinggg 2003-09-29
  • 打赏
  • 举报
回复
关注ing
PeterMCT 2003-09-29
  • 打赏
  • 举报
回复
up一下,不知道
angelheavens 2003-09-29
  • 打赏
  • 举报
回复
就跟RMI相似
bubuy 2003-09-29
  • 打赏
  • 举报
回复
看上去有点像事务处理。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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